S3にいくつかのデータを保存し、EC2インスタンスまたは特定のIAMロールを持つ特定のユーザーのみがS3にアクセスできるようにします。残念ながら、私たちはこれを行うにはいくつかの問題があります。我々はユーザーと(のbotoを使用して)バケットにアクセスすると特定のIAMロールのS3バケットへのアクセスを制限する方法を教えてください。
私たちは、この
{
"Version": "2012-10-17",
"Id": "SamplePolicy",
"Statement": [
{
"Sid": "Stmt1331136294179",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
},
{
"Sid": "Stmt1331136364169",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::our-account-number:user/the-user",
"arn:aws:iam::our-account-number:role/the-role"
]
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::the-bucket/*"
}
]}
のようなバケットのポリシーを設定し、それがローカルマシンまたは任意のEC2インスタンスから、正常に動作しますキーを押します。
しかし、我々は後のBotoからバケツにアクセスするときに我々は、私はまた、ポリシーを削除しようとしたインスタンスが正しいIAM役割を持っていることを
curl http://169.254.169.254/latest/meta-data/iam/info/
{
"Code" : "Success",
"LastUpdated" : "2015-10-22T09:09:31Z",
"InstanceProfileArn" : "our-account-number:instance-profile/the-role",
"InstanceProfileId" : "instance-rpofile-id"
}
を確認しました
ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied
を取得バケツから、それは実際に再びアクセス可能になります。 これを処理する方法はありますか?
私がここで共有したサンプルは、デバッグのために行ってきた簡略化されたバージョンです。本番環境では、KMSを使用してオブジェクトを暗号化し、そのキーにアクセスポリシーを設定する必要があります。私たちはその解決策が大好きで、できればそれを保つことを好む。
私は何回も行ったこのとの
あなたは自分の役割のポリシーを表示することができますか? –
'コード{ "バージョン": "2012年10月17日"、 "文":[ { "効果": "許可"、 "アクション": "S3:*"、 "リソース": "*" } ] } –