私はアプリの設定をS3バケット(APIキー)のファイルに保存しています。私は特定の環境にキーを結びつける特定のVPCエンドポイント経由のアクセスのみを許可するように設定されたS3バケットを持っています。プロダクションキーがステージング環境やテスト環境で誤って使用されていました。特定のVPCまたはコンソールからS3バケットへのアクセスを許可する
しかし、時には私はこれらのキーを修正する必要があり、それは痛みです。現在、バケットポリシーはコンソールへのアクセスを妨げるので、バケツポリシーを削除し、ファイルを更新して、ポリシーを置き換えなければなりません。
コンソール、特定のVPCエンドポイントからのアクセスを許可するにはどうしたらいいですか?
私が試したし、すでに失敗してきた現在の政策、:
{
"Version": "2012-10-17",
"Id": "Policy12345",
"Statement": [
{
"Sid": "Principal-Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account-id:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-keys-staging",
"arn:aws:s3:::my-keys-staging/*"
]
},
{
"Sid": "Access-to-specific-VPCE-only",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-keys-staging",
"arn:aws:s3:::my-keys-staging/*"
],
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": "vpce-vpceid"
}
}
}
]
}
なぜ「拒否」状態になっていますか? Amazon S3のコンテンツはデフォルトではプライベートなので、他の手段(例えばIAMユーザーに与えられたもの)によって許可された権限を無効にしたい場合にのみ 'Deny'が必要です。その結果、特定のユーザー(たとえばあなた!)がバケットにアクセスするためのアクセス権を割り当てることはできません。 –
@JohnRotensteinのコメントに追加するには、http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplayを参照してください。具体的には、「デフォルトで拒否されているリクエストと明示的に拒否されているリクエストポリシーは重要であり、デフォルトでは要求は拒否されますが、これは許可によって上書きされる可能性がありますが、ポリシーが明示的に要求を拒否した場合、その拒否は無効になりません。明示的な拒否が指定されており、上書きすることはできません。 – jarmod