
Amazon S3向けセキュリティツールキット
Amazon S3 向けのセキュリティツールキット

🍊 Instacart で実戦検証済み
実行:
pip install s3tk
AWS CLI または AWS Vault を使用して AWS 認証情報を設定できます:
pip install awscli
aws configure
各コマンドに必要な IAM ポリシー を参照してください。
バケットを次の項目についてスキャンします:
s3tk scan
特定のバケットでのみ実行する
s3tk scan my-bucket my-bucket-2
ワイルドカードでも動作します
s3tk scan "my-bucket*"
ログバケットとプレフィックスが正しいことを確認する
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"
CloudTrailのオブジェクトレベルのログ記録を確認する [実験的]
s3tk scan --object-level-logging
ログ記録、バージョニング、デフォルトの暗号化をスキップする
s3tk scan --skip-logging --skip-versioning --skip-default-encryption
失敗のメール通知を受け取る(SNS経由)
s3tk scan --sns-topic arn:aws:sns:...
バケットポリシーを一覧表示します
s3tk list-policy
特定のバケットでのみ実行する
s3tk list-policy my-bucket my-bucket-2
名前付きステートメントを表示する
s3tk list-policy --named
注: これは以前のポリシーを置き換えます
プライベートアップロードのみ
s3tk set-policy my-bucket --no-object-acl
削除ポリシー
s3tk delete-policy my-bucket
特定のバケットでパブリックアクセスをブロック
s3tk block-public-access my-bucket my-bucket-2
--dry-run フラグを使用してテストする
すべてのバケットでログ記録を有効化
s3tk enable-logging --log-bucket my-s3-logs
特定のバケットのみ
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs
ログプレフィックスを設定します(デフォルトは {bucket}/)
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"
--dry-run フラグを使用してテストする
ログ記録に関するいくつかの注意点:
すべてのバケットでバージョニングを有効化
s3tk enable-versioning
特定のバケットのみ
s3tk enable-versioning my-bucket my-bucket-2
--dry-run フラグを使用してテストする
すべてのバケットでデフォルト暗号化を有効化する
s3tk enable-default-encryption
特定のバケットのみ
s3tk enable-default-encryption my-bucket my-bucket-2
これは既存のオブジェクトを暗号化しません - これには encrypt コマンドを使用してください
テストには --dry-run フラグを使用してください
バケット内のすべてのオブジェクトのACLをスキャンします
s3tk scan-object-acl my-bucket
特定のオブジェクトのみ
s3tk scan-object-acl my-bucket --only "*.pdf"
特定のオブジェクトを除く
s3tk scan-object-acl my-bucket --except "*.jpg"
バケット内のすべてのオブジェクトのACLをリセットします
s3tk reset-object-acl my-bucket
これによりすべてのオブジェクトがプライベートになります。今後それを強制する方法についてはbucket policiesを参照してください。
テストには--dry-runフラグを使用してください
scan-object-aclと同じ方法で特定のオブジェクトを指定します
サーバー側暗号化を使用してバケット内のすべてのオブジェクトを暗号化します
s3tk encrypt my-bucket
デフォルトでは S3 マネージドキー を使用します。KMS マネージドキー を使用する場合は、次を使用します:
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...
顧客提供キーの場合は、次を使用します:
s3tk encrypt my-bucket --customer-key secret-key
--dry-run フラグを使用してテストする
scan-object-acl と同じ方法で特定のオブジェクトを指定する
注: オブジェクトはカスタム ACL を失います
バケット内のオブジェクトの暗号化されていないすべてのバージョンを削除する
s3tk delete-unencrypted-versions my-bucket
安全のため、これはオブジェクトの現在のバージョンを削除しません
テストには --dry-run フラグを使用してください
特定のオブジェクトは scan-object-acl と同じ方法で指定します
Route 53 をスキャンしてバケットを確認し、それらを所有していることを確かめます
s3tk scan-dns
そうでない場合、サブドメイン乗っ取りの脆弱性がある可能性があります。
認証情報は ~/.aws/credentials で指定するか、環境変数で指定できます。環境変数の説明についてはこのガイドを参照してください。
使用するプロファイルは次のように指定できます:
AWS_PROFILE=your-profile s3tk
各コマンドに必要な権限は以下のとおりです。必要なステートメントのみを含めてください。