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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cloudsplaining — Cloudsplainingは、最小権限の違反を特定し、リスク優先順位付けされたレポートを生成するAWS IAMセキュリティ評価ツールです。 | Kitploit
ツール/GitHubGitHub/salesforce/cloudsplaining
クラウドインフラストラクチャセキュリティ脆弱性分析構成監査クラウドセキュリティアイデンティティ&アクセス管理 (IAM)設定ミスクラウドインフラストラクチャセキュリティ 第8位クラウドセキュリティ 第9位
GitHubsalesforce/cloudsplaining
2.2k219136日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

cloudsplaining

Cloudsplainingは、最小権限の違反を特定し、リスク優先順位付けされたレポートを生成するAWS IAMセキュリティ評価ツールです。

リポジトリを見るウェブサイト

Cloudsplaining

Cloudsplainingは、AWS IAMの最小権限の違反を特定し、リスク優先度でソートされたHTMLレポートを生成するAWS IAMセキュリティ評価ツールです。

Tests Documentation Status Join the chat at https://gitter.im/cloudsplaining Twitter PyPI Python Version Downloads

  • サンプルレポート

ドキュメント

完全なドキュメントについては、ReadTheDocs上のプロジェクトをご覧ください。

  • インストール
  • チートシート
  • サンプルレポート

概要

Cloudsplainingは、AWS IAMポリシーにおける最小権限の違反を特定し、見やすいHTMLレポートを生成します。AWSアカウント内のすべてのポリシー、複数のAWSアカウントにまたがるポリシー、または単一のポリシーファイルをスキャンできます。

リソース制約を活用していないIAMアクションを特定するのに役立ちます。また、特定のAWSアカウントに対して無制限に以下のリスクをもたらすIAMポリシーをフラグ付けすることで、修正プロセスの優先順位付けを支援します。

  • データ漏洩(s3:GetObject、ssm:GetParameter、secretsmanager:GetSecretValue)
  • インフラストラクチャ変更
  • リソース露出(リソースベースのポリシーを変更する機能)
  • 権限昇格(Pathfinding.cloudに基づく)
  • 認証情報漏洩

Cloudsplainingはまた、AWSコンピューティングサービス(EC2、ECS、EKS、Lambdaなど)から引き受け可能なIAMロールも特定します。これらのロールはユーザー定義ロールよりも大きなリスクをもたらす可能性があります。特にAWSコンピューティングサービスが直接または間接的にインターネットに公開されているインスタンス上にある場合に顕著です。このようなロールのフラグ付けは、特定のシナリオにおいてペネトレーションテスター(または攻撃者)にとって特に有用です。例えば、攻撃者がssm:SendCommandを実行する権限を取得し、SSMエージェントがインストールされた特権EC2インスタンスが存在する場合、攻撃者は事実上それらのEC2インスタンスの権限を手に入れることができます。AWS Systems Manager Agentを介したリモートコード実行は既知の昇格・悪用経路でしたが、Cloudsplainingはこれらのケースの特定を容易にします。いくつかの例についてはサンプルレポートをご覧ください。

また、カスタム除外ファイルを指定して、様々な理由で誤検出となる結果をフィルタリングすることもできます。例えば、ユーザーポリシーは設計上寛容であるのに対し、システムロールは一般的により制限的です。また、組織のマルチアカウント戦略やAWSアプリケーションアーキテクチャに固有の除外設定もあるでしょう。

動機

Policy Sentryは、最小権限に従ってIAMポリシーをスケーラブルに作成できることを明らかにしました。Policy Sentryがリリースされる前は、リソース制約を欠いたIAMポリシードキュメントを見つけることはあまりにも簡単でした。以下のポリシーを考えてみてください。これはIAMプリンシパル(ロールまたはユーザー)がAWSアカウント内の任意のS3バケットに対してs3:PutObjectを実行することを許可しています。```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" } ] }

root@kitploit:~
これは悪いです。理想的には、アクセスはリソースARNに従って制限されるべきです。次のように:```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

Policy Sentry は これを非常に簡単に実現します。Infrastructure as Code の開発者や AWS 管理者がこのツール(非常に使いやすい)に慣れると、採用が非常に迅速に開始されることがわかりました。しかしながら、もし AWS を使用しているなら、改善が必要な IAM ポリシーのバックログが非常に多い可能性があります。何百もの AWS アカウントがあり、それぞれに数十のポリシーがある場合、修正すべきポリシーをプログラムで特定して、それらの AWS アカウントをどのようにロックダウンできるでしょうか?

そのために、私たちは Cloudsplaining を作成しました。

Cloudsplaining は AWS IAM ポリシーにおける最小権限の違反を特定し、美しい HTML レポートを生成します。AWS アカウント内のすべてのポリシー、複数の AWS アカウントにわたるポリシー、または単一のポリシーファイルをスキャンできます。

インストール

Homebrew```bash

brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining

root@kitploit:~
#### Pip3```bash
pip3 install --user cloudsplaining
  • これで、コマンドラインで cloudsplaining --help を実行することで cloudsplaining が実行できるようになります。

シェル補完

Bash補完を有効にするには、.bashrc に以下を追加します。```bash eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"

root@kitploit:~
ZSH補完を有効にするには、これをあなたの.zshrcに記述してください:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"

単一のIAMポリシーのスキャン

また、アカウント全体ではなく、単一のポリシーファイルをスキャンしてリスクを特定することもできます。```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json

root@kitploit:~
出力には、検出結果の説明と、リソース制約を活用していないIAMアクションのリストが含まれます。

出力は次のようになります。```console
Issue found: Data Exfiltration
Actions: s3:GetObject

Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl

Issue found: Unrestricted Infrastructure Modification
Actions: ecr:BatchDeleteImage, ecr:CompleteLayerUpload, ecr:CreateRepository, ecr:DeleteLifecyclePolicy, ecr:DeleteRepository, ecr:DeleteRepositoryPolicy, ecr:InitiateLayerUpload, ecr:PutImage, ecr:PutImageScanningConfiguration, ecr:PutImageTagMutability, ecr:PutLifecyclePolicy, ecr:SetRepositoryPolicy, ecr:StartImageScan, ecr:StartLifecyclePolicyPreview, ecr:TagResource, ecr:UntagResource, ecr:UploadLayerPart, s3:AbortMultipartUpload, s3:BypassGovernanceRetention, s3:CreateAccessPoint, s3:CreateBucket, s3:DeleteAccessPoint, s3:DeleteAccessPointPolicy, s3:DeleteBucket, s3:DeleteBucketPolicy, s3:DeleteBucketWebsite, s3:DeleteObject, s3:DeleteObjectTagging, s3:DeleteObjectVersion, s3:DeleteObjectVersionTagging, s3:GetObject, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccelerateConfiguration, s3:PutAccessPointPolicy, s3:PutAnalyticsConfiguration, s3:PutBucketAcl, s3:PutBucketCORS, s3:PutBucketLogging, s3:PutBucketNotification, s3:PutBucketObjectLockConfiguration, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutBucketRequestPayment, s3:PutBucketTagging, s3:PutBucketVersioning, s3:PutBucketWebsite, s3:PutEncryptionConfiguration, s3:PutInventoryConfiguration, s3:PutLifecycleConfiguration, s3:PutMetricsConfiguration, s3:PutObject, s3:PutObjectAcl, s3:PutObjectLegalHold, s3:PutObjectRetention, s3:PutObjectTagging, s3:PutObjectVersionAcl, s3:PutObjectVersionTagging, s3:PutReplicationConfiguration, s3:ReplicateDelete, s3:ReplicateObject, s3:ReplicateTags, s3:RestoreObject, s3:UpdateJobPriority, s3:UpdateJobStatus

AWSアカウント全体のスキャン

アカウント認可詳細のダウンロード

AWSアカウント全体をスキャンし、レポートを生成できます。これを行うには、AWS IAMのget-account-authorization-details APIコールを利用し、アカウントのすべてのIAM詳細を含む大きなJSONファイル(アカウントあたり約100KB)をダウンロードします。これには、ユーザー、グループ、ロール、カスタマー管理ポリシー、AWS管理ポリシーのデータが含まれます。

  • CLIで使用できるAWS認証情報が設定されている必要があります。

  • iam:GetAccountAuthorizationDetailsを実行する権限が必要です。arn:aws:iam::aws:policy/SecurityAuditポリシーにはこれが含まれており、IAMサービスへの読み取りアクセスを許可する他の多くのポリシーにも含まれています。

  • アカウント認可詳細をダウンロードするには、AWSに認証されていることを確認してから、cloudsplainingのdownloadコマンドを実行します:```bash cloudsplaining download

root@kitploit:~
* 環境変数の代わりに `~/.aws/credentials` ファイルを使用したい場合は、プロファイル名を指定できます:```bash
cloudsplaining download --profile myprofile

現在のディレクトリに、アカウントの認可詳細情報を含むJSONファイルがダウンロードされます。

除外ファイルの作成

Cloudsplainingツールは、AWSアカウント内のすべての背景をプログラムで理解しようとはしません。ポリシーがインスタンスプロファイルに適用されているか、ポリシーがアタッチされているか、インラインIAMポリシーが使用されているか、AWS管理ポリシーが使用されているかなど、一部の背景はプログラムで理解することが可能です。AWSインフラストラクチャとIAM戦略の設計の背景を理解しているのはあなただけです。

そのため、コンテキストに依存する誤検出を排除することが重要です。これは除外ファイルを使用して行うことができます。必要な形式を覚えなくてもよいように、除外ファイルを生成するコマンドを用意しています。

除外テンプレートは以下のコマンドで作成できます:```bash cloudsplaining create-exclusions-file

root@kitploit:~
これにより、現在のディレクトリに `exclusions.yml` という名前のファイルが生成されます。

次に `scan` コマンドを実行する際、以下のように除外ファイルを使用できます。```bash
cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

除外ファイルの構造の詳細については、誤検知のフィルタリングを参照してください。

認可詳細ファイルのスキャン

アカウント認可ファイルをダウンロードしたので、cloudsplaining を使用して すべての AWS IAM ポリシーをスキャンできます。

次のコマンドを実行します。```bash cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

root@kitploit:~
次のようなHTMLレポートを作成します。

> ![](https://raw.githubusercontent.com/salesforce/cloudsplaining/HEAD/docs/_images/cloudsplaining-report.gif)

また、生のJSONデータファイルも作成されます:

* `default-iam-results.json`: これにはレポートの生のJSON出力が含まれます。このデータファイルを使用して、スキャン結果をさまざまな目的で操作できます。例えば、このデータを解析して自動化されたJIRA課題やSalesforce Work Itemsを開くPythonスクリプトを作成できます。以下にエントリの例を示します。完全な例は[examples/files/iam-results-example.json](https://github.com/salesforce/cloudsplaining/blob/master/examples/files/iam-results-example.json)で確認できます。```json
{
    "example-authz-details": [
        {
            "AccountID": "012345678901",
            "ManagedBy": "Customer",
            "PolicyName": "InsecureUserPolicy",
            "Arn": "arn:aws:iam::012345678901:user/userwithlotsofpermissions",
            "ActionsCount": 2,
            "ServicesCount": 1,
            "Actions": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Services": [
                "s3"
            ]
        }
    ]
}

examples/files フォルダにあるサンプル出力を参照してください。

誤検知のフィルタリング

リソース制限はベストプラクティスですが(特にシステムロールやインスタンスプロファイルの場合)、意図的に設定されることもあります。例えば、Terraform をプロビジョニングする EC2 インスタンスのインスタンスプロファイルにカスタム IAM ポリシーが使用されている状況を考えてみましょう。この場合、広範な権限は設計上の要件であるため、結果に含めたくないものです。

以下のコマンドで除外テンプレートを作成できます:```bash cloudsplaining create-exclusions-file

root@kitploit:~
これにより、カレントディレクトリに `exclusions.yml` というファイルが生成されます。

デフォルトの除外ファイルは次のようになります:```yaml
# Policy names to exclude from evaluation
# Suggestion: Add policies here that are known to be overly permissive by design, after you run the initial report.
policies:
  - "AWSServiceRoleFor*"
  - "*ServiceRolePolicy"
  - "*ServiceLinkedRolePolicy"
  - "AdministratorAccess" # Otherwise, this will take a long time
  - "service-role*"
  - "aws-service-role*"
# Don't evaluate these roles, users, or groups as part of the evaluation
roles:
  - "service-role*"
  - "aws-service-role*"
users:
  - ""
groups:
  - ""
# Read-only actions to include in the results, such as s3:GetObject
# By default, it includes Actions that could lead to Data Exfiltration
include-actions:
  - "s3:GetObject"
  - "ssm:GetParameter"
  - "ssm:GetParameters"
  - "ssm:GetParametersByPath"
  - "secretsmanager:GetSecretValue"
# Write actions to include from the results, such as kms:Decrypt
exclude-actions:
  - ""
  • 必要な追加や変更は自由に行ってください。
    • policies の下に、除外したいポリシー名のパスをリストします。
    • MyRole という名前のロールを除外したい場合は、roles リストに MyRole または MyR* を記述します。
    • users および groups リストでも同様の方法を使用できます。

scan コマンドを実行する際は、次のように除外ファイルを使用できます:```bash cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

root@kitploit:~
### 複数のAWSアカウントのスキャン

IAMユーザーまたはIAMロールが、複数のAWSアカウントにわたる共通のIAMロールに対する`sts:AssumeRole`権限を持っている場合、`scan-multi-account`コマンドを使用できます。

以下の図は、このプロセスの動作を示しています。

![Cloudsplainingを使用した複数のAWSアカウントのスキャンの図](https://assets.kitploit.com/production/public/readmes/3625/a58d8b2e6a0986fdd6adf5c583f34c8efe82a084ad41b8fa00d1e1ef29a0e4fe.png)

> 注: クロスアカウントアクセスの設定が初めての場合は、[IAMロールを使用したAWSアカウント間のアクセス委任に関する公式AWSチュートリアル](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)をご確認ください。上記のアーキテクチャのセットアップに役立ちます。

* まず、マルチアカウント設定ファイルを作成する必要があります。次のコマンドを実行してください。```bash
cloudsplaining create-multi-account-config-file \ 
    -o multi-account-config.yml
  • これにより、multi-account-config.yml という名前のファイルが生成され、以下の内容になります:```yaml accounts: default_account: 123456789012 prod: 123456789013 test: 123456789014
root@kitploit:~
> 注記: 上記のファイルの形式に `account_name: accountID` が含まれている点に注意してください。ファイルの内容を編集して、希望するアカウント名とアカウントIDに合わせてください。必要なアカウントIDはいくつでも追加できます。

次のステップとして、以下のことを想定します:
* ターゲットアカウントには、`CommonSecurityRole` という名前のロールがあります。
* IAMユーザーの認証情報は、`scanning-user` というAWS Credentialsプロファイルにあります。
* そのユーザーは、先ほど作成したYAMLファイルで指定したすべてのターゲットアカウントの `CommonSecurityRole` を引き受けるための `sts:AssumeRole` 権限を持っています。
* 出力を `my-results-bucket` というS3バケットに保存したいとします。

上記のデータを使用して、次のコマンドを実行できます:```bash
cloudsplaining scan-multi-account \
    -c multi-account-config.yml \
    --profile scanning-user \
    --role-name CommonSecurityRole \ 
    --output-bucket my-results-bucket

Note that if you run the above without the --profile flag, it will execute in the standard AWS Credentials order of precedence (i.e., Environment variables, credentials profiles, ECS container credentials, then finally EC2 Instance Profile credentials).

カスタムガイダンスと付録

Cloudsplainingは、HTMLレポートのガイダンスと付録セクションをカスタマイズして、組織固有のセキュリティ推奨事項とドキュメントを含めることをサポートしています。

仕組み

プロジェクトのルートディレクトリにHTMLファイルを配置します:

  • custom-guidance.html - カスタムセキュリティガイダンスコンテンツ
  • custom-appendices.html - カスタム付録コンテンツ

動作

  • ファイルが存在しない場合: デフォルトのAWSセキュリティアドバイスを表示
  • ファイルが存在し内容がある場合: カスタムHTMLコンテンツを表示
  • ファイルが存在するが空の場合: タブを完全に非表示
  • 混合設定: 各タブは独立して動作

使用例```bash

Create custom guidance

echo '

Company Security Guidelines

Follow these organization-specific steps:

  • Review with security team
  • Document in JIRA ticket
  • Get approval before remediation
' > custom-guidance.html

Create custom appendices

echo '

Internal Resources

Additional company resources:

  • Security Portal
  • IAM Best Practices
' > custom-appendices.html ``` # カスタムコンテンツでレポートを生成する cloudsplaining scan --input-file account-data.json --output reports/

チートシート```bash

Download authorization details

cloudsplaining download

Download from a specific AWS profile

cloudsplaining download --profile someprofile

Scan Authorization details

cloudsplaining scan --input-file default.json

Scan Authorization details with custom exclusions

cloudsplaining scan --input-file default.json --exclusions-file exclusions.yml

Scan Policy Files

cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json --exclusions-file examples/example-exclusions.yml

Scan Multiple Accounts

Generate the multi account config file

cloudsplaining create-multi-account-config-file -o accounts.yml cloudsplaining scan-multi-account -c accounts.yml -r TargetRole --output-directory ./

root@kitploit:~
## FAQ

**デフォルトですべてのポリシーをスキャンしますか?**

いいえ、IAMプリンシパルにアタッチされたポリシーのみをスキャンします。

**ダウンロードコマンドはすべてのポリシーバージョンをダウンロードしますか?**

デフォルトではダウンロードしません。これを行う場合は、`--include-non-default-policy-versions`フラグを指定してください。なお、`scan`ツールは現在デフォルト以外のバージョンでは動作しません。

**インストール手順に従いましたが、コマンドラインからプログラムをまったく実行できません。どうすればいいですか?**

これはおそらくPATHの問題です。PATH環境変数が`pip3`でインストールされたバイナリパッケージを考慮していません。Macでは、インストールされているバージョンに応じて、以下のコマンドを入力することで修正できる可能性があります。結果は異なる場合があります。```bash
export PATH=$HOME/Library/Python/3.7/bin/:$PATH

インストール手順に従いましたが、ModuleNotFoundError が表示され、No module named policy_sentry.analysis.expand と表示されます。どうすればよいですか?

Cloudsplaining の最新バージョンにアップグレードしてみてください。このエラーはバージョン 0.0.10 で修正されました。

参考文献

  • Policy Sentry(Kinnaird McQuade 著、Salesforce)
  • Parliament(Scott Piper 著、Summit Route および Duo Labs)
  • AWS 特権昇格手法(Spencer Gietzen 著、Rhino Security Labs)
  • ポリシーサマリー内のアクセスレベルサマリーについて
  • 次世代ブロックチェーンベースの AI を複数のサービスメッシュで活用し、マルチクラウド IAM の魔法を透過的に自動化する 🧙‍♂️
ツールをダウンロード