2

.NETアプリケーションを介してAmazons3にアクセスしようとすると、アクセスが拒否されます。IAMユーザーがいますが、彼の資格情報を使用すると正常に機能します。しかし、自分のクレデンシャルを使用してフェデレーションユーザーを作成すると、結果のユーザーはAmazons3のバケットにアクセスできなくなります。注意すべき点の1つは、コードでフェデレーションユーザーのポリシーを指定していないことです。彼にIAMユーザーと同じアクセスレベルを持たせたいです。ただし、コードでポリシーの値を指定すると、バケットにアクセスして一覧表示できます。ポインタはありますか?

  private static SessionAWSCredentials GetTemporaryFederatedCredentials(
                                string accessKeyId, string secretAccessKeyId)
        {
            var config = new AmazonSecurityTokenServiceConfig();
            var stsClient = 
                new AmazonSecurityTokenServiceClient(
                                             accessKeyId, secretAccessKeyId, config);
            var federationTokenRequest =
                                     new GetFederationTokenRequest();
            federationTokenRequest.Name = "User1";
//            federationTokenRequest.Policy =
//                @"{
//                              ""Statement"":
//                              [
//                                {
//                                  ""Action"":[""s3:ListAllMyBuckets""],
//                                  ""Effect"":""Allow"",
//                                  ""Resource"":""arn:aws:s3:::*""
//                                                }
//                                              ]
//                                            }";
            federationTokenRequest.DurationSeconds = 3600; 
         GetFederationTokenResponse federationTokenResponse = 
                         stsClient.GetFederationToken(federationTokenRequest);
            GetFederationTokenResult federationTokenResult = 
                             federationTokenResponse.GetFederationTokenResult;
            Credentials credentials = federationTokenResult.Credentials;


            var sessionCredentials =
                new SessionAWSCredentials(credentials.AccessKeyId,
                                          credentials.SecretAccessKey,
                                          credentials.SessionToken);
            return sessionCredentials;
        }


    }
}
4

0 に答える 0