DynamoDB でリソースベースのポリシーでパブリックアクセスをブロックする
ブロックパブリックアクセス (BPA) は、Amazon Web Services (AWS)
BPA は自動推論
重要
BPA は、DynamoDB リソース (テーブル、インデックス、ストリームなど) に直接アタッチされたリソースベースのポリシーによってパブリックアクセスが許可されることがないように防いで、リソースを保護します。BPA を利用したうえでさらに、次のポリシーを注意深く調べて、パブリックアクセスが許可されていないことを確かめてください。
-
関連する AWS プリンシパル (IAM ロールなど) にアタッチされているアイデンティティベースのポリシー
-
関連する AWS リソース (AWS Key Management Service (KMS) キーなど) にアタッチされているリソースベースのポリシー
プリンシパルに * エントリを含めないでください。または、指定された条件キーのいずれかでプリンシパルからリソースへのアクセスが制限されていることを確認する必要があります。リソースベースのポリシーが AWS アカウント 全体でテーブル、インデックス、またはストリームへのパブリックアクセスを許可している場合、ポリシー内の指定内容が修正され、非パブリックと判断されない限り、そのポリシーの作成または変更は阻止されます。
Principal ブロック内に 1 つ以上のプリンシパルを指定することで、ポリシーを非パブリックにすることができます。次のリソースベースのポリシーの例では、2 つのプリンシパルを指定することで、パブリックアクセスをブロックしています。
{ "Effect": "Allow", "Principal": { "AWS": [ "123456789012", "111122223333" ] }, "Action": "dynamodb:*", "Resource": "*" }
特定の条件キーを指定してアクセスを制限するポリシーも、パブリックとは見なされません。リソースベースのポリシーで指定されているプリンシパルを評価するほかに、以下の信頼できる条件キーも、リソースベースのポリシーが付与するアクセスが非パブリックであるという評価の補足に使用できます。
-
aws:PrincipalAccount -
aws:PrincipalArn -
aws:PrincipalOrgID -
aws:PrincipalOrgPaths -
aws:SourceAccount -
aws:SourceArn -
aws:SourceVpc -
aws:SourceVpce -
aws:UserId -
aws:PrincipalServiceName -
aws:PrincipalServiceNamesList -
aws:PrincipalIsAWSService -
aws:Ec2InstanceSourceVpc -
aws:SourceOrgID -
aws:SourceOrgPaths
さらに、リソースベースのポリシーが非パブリックとなるには、Amazon リソースネーム (ARN) と文字列キーの値にワイルドカードや変数が含まれていてはいけません。リソースベースのポリシーで aws:PrincipalIsAWSService キーが使用されている場合は、キー値を true に設定する必要があります。
次のポリシーでは、指定されたアカウントのユーザー John にアクセスが限定されています。この条件により Principal が制限されるため、パブリックとは見なされません。
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "dynamodb:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/John" } } }
次の例は非パブリックのリソースベースのポリシーです。StringEquals 演算子を使用して sourceVPC を制限しています。