Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
s3tk — Amazon S3向けセキュリティツールキット | Kitploit
ツール/GitHubGitHub/ankane/s3tk
クラウドインフラストラクチャセキュリティ脆弱性スキャナー暗号化/復号化ツール構成監査クラウドセキュリティ設定ミス
GitHubankane/s3tk

s3tk

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

リポジトリを見る
459271ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

s3tk

Amazon S3 のためのセキュリティツールキット

Screenshot

🍊 Instacart で実戦投入済み

インストール

以下を実行:

root@kitploit:~
pip install s3tk

AWS CLI または AWS Vault を使用して AWS 認証情報を設定できます:

root@kitploit:~
pip install awscli
aws configure

各コマンドに必要な IAM ポリシー を参照してください。

コマンド

スキャン

バケットをスキャンして以下を確認:

  • ACL が公開設定になっている
  • ポリシーが公開設定になっている
  • 公開アクセスがブロックされている
  • ログが有効になっている
  • バージョニングが有効になっている
  • デフォルトの暗号化が有効になっている
root@kitploit:~
s3tk scan

特定のバケットのみ実行

root@kitploit:~
s3tk scan my-bucket my-bucket-2

ワイルドカードでも動作

root@kitploit:~
s3tk scan "my-bucket*"

正しいログバケットとプレフィックスを確認

root@kitploit:~
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"

CloudTrail オブジェクトレベルのログ記録をチェック [試験的]

root@kitploit:~
s3tk scan --object-level-logging

ログ、バージョニング、またはデフォルトの暗号化をスキップ

root@kitploit:~
s3tk scan --skip-logging --skip-versioning --skip-default-encryption

障害発生時にメール通知を受け取る(SNS 経由)

root@kitploit:~
s3tk scan --sns-topic arn:aws:sns:...

ポリシーの一覧表示

バケットポリシーを一覧表示

root@kitploit:~
s3tk list-policy

特定のバケットのみ実行

root@kitploit:~
s3tk list-policy my-bucket my-bucket-2

名前付きステートメントを表示

root@kitploit:~
s3tk list-policy --named

ポリシーの設定

注意: これにより以前のポリシーは置き換えられます

プライベートアップロードのみ許可

root@kitploit:~
s3tk set-policy my-bucket --no-object-acl

ポリシーの削除

ポリシーを削除

root@kitploit:~
s3tk delete-policy my-bucket

公開アクセスのブロック

特定のバケットで公開アクセスをブロック

root@kitploit:~
s3tk block-public-access my-bucket my-bucket-2

テストするには --dry-run フラグを使用

ログの有効化

すべてのバケットでログを有効化

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs

特定のバケットのみ

root@kitploit:~
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs

ログプレフィックスを設定(デフォルトは {bucket}/)

root@kitploit:~
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"

テストするには --dry-run フラグを使用

ログ記録に関する注意点:

  • すでにログが有効になっているバケットは更新されません
  • ログバケットはソースバケットと同じリージョンにある必要があります - リージョンごとにこのコマンドを複数回実行してください
  • ログが表示されるまでに1時間以上かかる場合があります

バージョニングの有効化

すべてのバケットでバージョニングを有効化

root@kitploit:~
s3tk enable-versioning

特定のバケットのみ

root@kitploit:~
s3tk enable-versioning my-bucket my-bucket-2

テストするには --dry-run フラグを使用

デフォルト暗号化の有効化

すべてのバケットでデフォルト暗号化を有効化

root@kitploit:~
s3tk enable-default-encryption

特定のバケットのみ

root@kitploit:~
s3tk enable-default-encryption my-bucket my-bucket-2

これにより既存のオブジェクトは暗号化されません。その場合は encrypt コマンドを使用してください

テストするには --dry-run フラグを使用

オブジェクト ACL のスキャン

バケット内のすべてのオブジェクトの ACL をスキャン

root@kitploit:~
s3tk scan-object-acl my-bucket

特定のオブジェクトのみ

root@kitploit:~
s3tk scan-object-acl my-bucket --only "*.pdf"

特定のオブジェクトを除外

root@kitploit:~
s3tk scan-object-acl my-bucket --except "*.jpg"

オブジェクト ACL のリセット

バケット内のすべてのオブジェクトの ACL をリセット

root@kitploit:~
s3tk reset-object-acl my-bucket

これによりすべてのオブジェクトがプライベートになります。今後適用する方法についてはバケットポリシーを参照してください

テストするには --dry-run フラグを使用

特定のオブジェクトの指定方法はオブジェクト ACL のスキャンと同じ

暗号化

バケット内のすべてのオブジェクトをサーバーサイド暗号化で暗号化

root@kitploit:~
s3tk encrypt my-bucket

デフォルトでは S3 管理キー を使用します。KMS 管理キー を使用する場合:

root@kitploit:~
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...

顧客提供キー を使用する場合:

root@kitploit:~
s3tk encrypt my-bucket --customer-key secret-key

テストするには --dry-run フラグを使用

特定のオブジェクトの指定方法はオブジェクト ACL のスキャンと同じ

注意: オブジェクトはカスタム ACL を失います

暗号化されていないバージョンの削除

バケット内の暗号化されていないオブジェクトのバージョンをすべて削除

root@kitploit:~
s3tk delete-unencrypted-versions my-bucket

安全性のため、現在のバージョンのオブジェクトは削除されません

テストするには --dry-run フラグを使用

特定のオブジェクトの指定方法はオブジェクト ACL のスキャンと同じ

DNS スキャン

Route 53 をスキャンしてバケットを所有していることを確認

root@kitploit:~
s3tk scan-dns

そうしないと、サブドメイン乗っ取りに対して脆弱になる可能性があります

認証情報

認証情報は ~/.aws/credentials または環境変数で指定できます。環境変数の説明についてはこのガイドを参照してください。

使用するプロファイルを指定:

root@kitploit:~
AWS_PROFILE=your-profile s3tk

IAMポリシー

各コマンドに必要な権限は以下の通りです。必要なステートメントのみを含めてください。

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Scan",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketLogging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanObjectLevelLogging",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:ListTrails",
                "cloudtrail:GetTrail",
                "cloudtrail:GetEventSelectors",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ScanDNS",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SetPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DeletePolicy",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "BlockPublicAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableLogging",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketLogging"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableVersioning",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutBucketVersioning"
            ],
            "Resource": "*"
        },
        {
            "Sid": "EnableDefaultEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:PutEncryptionConfiguration"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ResetObjectAcl",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObjectAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "Encrypt",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Sid": "DeleteUnencryptedVersions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:GetObjectVersion",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

アクセスログ

Amazon Athena は S3 ログのクエリに最適です。テーブルを作成してクエリを実行:

root@kitploit:~
SELECT
    parse_datetime(requestdatetime, 'dd/MMM/yyyy:HH:mm:ss Z') AS time,
    key,
    remoteip,
    useragent
FROM
    s3_access_logs_db.mybucket_logs
WHERE
    requester = '-'
    AND httpstatus LIKE '2%'
    AND key LIKE 'some-keys%'
ORDER BY 1

CloudTrail ログ

Amazon Athena は CloudTrail ログのクエリにも最適です。テーブルを作成してクエリを実行:

root@kitploit:~
SELECT
    eventtime,
    eventname,
    useridentity.username,
    requestparameters
FROM
    cloudtrail_logs
WHERE
    eventname LIKE '%Bucket%'
ORDER BY 1

ベストプラクティス

シンプルに保ち、最小権限の原則に従ってミスの可能性を減らします。

  • バケット関連の操作を実行できる人を厳しく制限する
  • 異なる権限を持つオブジェクトを同じバケットに混在させない(バケットポリシーで強制)
  • バケットレベルで公開読み取り権限を指定しない(バケットポリシーに GetObject を含めない)
  • 設定の変更を頻繁に監視する

バケットポリシー

プライベートアップロードのみ許可

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObjectAcl",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

パフォーマンス

バケットオブジェクトを反復処理するコマンド(scan-object-acl、reset-object-acl、encrypt、delete-unencrypted-versions)では、レイテンシを最小限にするために EC2 サーバー上で s3tk を実行してください。

注意事項

set-policy、block-public-access、enable-logging、enable-versioning、enable-default-encryption コマンドは便宜のために提供されています。バケットの管理には Terraform を推奨します。

root@kitploit:~
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-bucket"
  acl    = "private"

  logging {
    target_bucket = "my-s3-logs"
    target_prefix = "my-bucket/"
  }

  versioning {
    enabled = true
  }
}

resource "aws_s3_bucket_public_access_block" "my_bucket" {
  bucket = "${aws_s3_bucket.my_bucket.id}"

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

アップグレード

以下を実行:

root@kitploit:~
pip install s3tk --upgrade

マスターブランチを使用するには:

root@kitploit:~
pip install git+https://github.com/ankane/s3tk.git --upgrade

Docker

以下を実行:

root@kitploit:~
docker run -it ankane/s3tk aws configure

認証情報をコミット:

root@kitploit:~
docker commit $(docker ps -l -q) my-s3tk

そして実行:

root@kitploit:~
docker run -it my-s3tk s3tk scan

履歴

変更ログを参照

コントリビューション

このプロジェクトの改善にご協力ください。以下の方法で貢献できます:

  • バグ報告
  • バグ修正とプルリクエストの送信
  • ドキュメントの作成、明確化、修正
  • 新機能の提案または追加

開発を始めるには:

root@kitploit:~
git clone https://github.com/ankane/s3tk.git
cd s3tk
pip install --group dev
ツールをダウンロード