バケットポリシーを使って、S3バケットへの特定のIPアドレスからのアクセスを拒否する
ホワイトリスト方式が普通なので、逆なんじゃないかという指摘はごもっともです。
ちなみにホワイトリスト方式のやり方は、公式参照。
で、表題の件ですが、下記のように書けます。
{ "Id": "Policy1506259625570", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1506259623698", "Action": "s3:*", "Effect": "Deny", "Resource": "arn:aws:s3:::buckername001/*", "Condition": { "IpAddress": { "aws:SourceIp": "123.456.78.9" } }, "Principal": "*" } ] }
AWS Policy Generatorっていうのを使ったら簡単に作れました。便利ですね。
ちなみにアクセス制限かけた後に、該当のバケットにアクセスしてみると、下記のようなレスポンスが返ります。
<Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>A3608701A147C5C6</RequestId> <HostId> PbjrlVPjjw7Fq0RCFFg1ecntR9OCQxFr3DapEugtGggSXRbDkb6kqibfRl8+ZT+cuFwaZjrRFjE= </HostId> </Error>
というわけで、S3オブジェクトの誤削除に対する有効な機能/設定は、
- バージョニング
- バケットポリシーによる権限設定
ということのようです。