.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;
}
}
}