AWS に接続して脆弱性の検出とリスク評価を行う

Security Command Center のエンタープライズ ティアを AWS 環境に接続すると、次のことができます。

  • AWS からの検出結果(脅威や脆弱性を含む)を確認して修正する
  • AWS のセキュリティ体制の作成と管理
  • 公共のインターネットから価値の高い AWS アセットへの潜在的な攻撃パスを特定する
  • AWS リソースのコンプライアンスをさまざまな標準やベンチマークとマッピングする

Security Command Center を AWS に接続すると、セキュリティ運用チームは Google Cloud と AWS 全体の脅威と脆弱性を 1 か所で管理して修正できます。

Security Command Center で AWS 組織をモニタリングするには、Google Cloud サービス エージェントと、モニタリングするリソースにアクセスできる AWS アカウントを使用して、接続を構成する必要があります。 Security Command Center はこの接続を使用して、定義したすべての AWS アカウントとリージョンで、アセット メタデータを定期的に収集します。

このドキュメントでは、AWS との接続を設定する方法について説明します。接続を設定するときに、以下の構成を行います。

  • モニタリングする AWS リソースに直接アクセスできる AWS の一連のアカウント。Google Cloud コンソールでは、これらのアカウントはコレクタ アカウントと呼ばれます。
  • コレクタ アカウントの認証を許可する適切なポリシーとロールを持つ AWS のアカウント。Google Cloud コンソールでは、このアカウントは委任されたアカウントと呼ばれます。委任されたアカウントコレクタ アカウントの両方が、同じ AWS 組織内にある必要があります。
  • 認証のために委任されたアカウントに接続する Google Cloud 内のサービス エージェント。
  • AWS リソースからアセットデータを収集するパイプライン。

この接続は、脅威検出のために AWS ログを取り込むことができる Security Command Center の SIEM 機能には適用されません。

以下の図に、この構成を示します。 テナント プロジェクトは、自動的に作成され、アセットデータ収集パイプライン インスタンスが含まれるプロジェクトです。

AWS と Security Command Center の構成。

始める前に

以下のタスクを完了してから、このページの残りのタスクを完了してください。

Security Command Center の Enterprise ティアを有効にする

設定ガイドのステップ 1 とステップ 2 を完了して、Security Command Center Enterprise ティアを有効にします。

権限を設定する

AWS コネクタを使用するために必要な権限を取得するには、Cloud Asset オーナー roles/cloudasset.owner)IAM ロールの付与を管理者に依頼してください。 ロールの付与の詳細については、アクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

AWS アカウントを作成する

以下の AWS リソースが作成されていることを確認します。

Security Command Center を構成する

  1. Google Cloud コンソールで設定ページに移動します。

    設定に進む

  2. Security Command Center Enterprise ティアを有効にした組織が表示されていることを確認します。

  3. [手順 3: アマゾン ウェブ サービス(AWS)コネクタを設定する] をクリックします。

  4. [Delegated account ID] に、委任されたアカウントとして使用できる AWS アカウントの AWS アカウント ID を入力します。

  5. 必要に応じて、詳細オプションを確認します。

  6. [続行] をクリックします。

  7. 次のいずれかを行います。

    • 委任されたロールとコレクタロール用の CloudFormation テンプレートをダウンロードします。
    • 詳細オプションを構成した場合や、デフォルトの AWS ロール名(aws-delegated-roleaws-collector-role)を変更する必要がある場合は、AWS コンソールを使用するを選択します。 サービス エージェント ID、委任されたロール名、コレクタのロール名をコピーします。

    接続の作成後にロール名を変更することはできません。

[作成] はクリックしないでください。代わりに、AWS 環境を構成します。

AWS 環境を構成する

AWS 環境は、次のいずれかの方法で設定できます。

CloudFormation テンプレートを使用して AWS 環境を設定する

CloudFormation テンプレートをダウンロードした場合は、次の手順で AWS 環境を設定します。

  1. AWS 委任アカウントのコンソールにログインします。他のコレクタ AWS アカウントを引き継ぐための委任アカウントにログインしていることを確認します。
  2. AWS CloudFormation テンプレート コンソールに移動します。
  3. [Stacks] > [With new resources (standard)] をクリックします。
  4. 委任されたロールのテンプレート ファイルをアップロードし、[次へ] をクリックします。
  5. スタック名を入力します。委任されたロールのロール名を変更した場合は、パラメータを更新します。[次へ] をクリックします。
  6. 組織の必要に応じて、スタック オプションを更新し、[Next] をクリックします。
  7. 情報を確認し、[Submit] をクリックします。クラスタが作成されるまで待ちます。問題が発生した場合は、トラブルシューティングをご覧ください。

    AWS アカウントを個別に追加する場合は(アカウントの自動検出を無効にして)、単一のスタックセットを作成する代わりに、AWS アカウントごとに個別のスタックを作成することもできます。

  8. AWS 管理アカウント、または委任管理者として登録されているメンバー アカウントを使用して、[Stackset] > [Create StackSet] をクリックします。

  9. [サービスが管理する権限] をクリックします。

  10. コレクタロール テンプレート ファイルをアップロードします。[次へ] をクリックします。

  11. [Specify StackSet details] ページで、スタックセット名と説明を入力します。委任アカウント ID とロール名を確認して更新します。[次へ] をクリックします。

  12. 組織の必要に応じて、スタックセット オプションを構成します。[次へ] をクリックします。

  13. [デプロイ オプションの設定] ページで、次の操作を行います。

    1. デプロイ ターゲットを選択します。AWS 組織全体にデプロイすることも、データを収集するすべての AWS アカウントを含む組織部門にデプロイすることもできます。

    2. ロールとポリシーを作成する AWS リージョンを指定します。役割はグローバル リソースであるため、複数のリージョンを指定する必要はありません。

    3. 必要に応じて他の設定を変更し、[次へ] をクリックします。

  14. 変更内容を確認し、[送信] をクリックします。エラーが表示された場合は、トラブルシューティングをご覧ください。

  15. AWS CloudFormation スタックセットは管理アカウントでスタック インスタンスを作成しないため、別のスタックをデプロイして管理アカウントでコレクタロールをプロビジョニングします。詳細については、DeploymentTargets をご覧ください。

統合プロセスを完了するには、統合プロセスを完了するをご覧ください。

AWS アカウントを手動で構成する

CloudFormation テンプレートが使用できない場合(異なるロール名を使用している場合や、統合をカスタマイズしている場合など)は、必要な AWS IAM ポリシーと AWS IAM ロールを手動で作成できます。

委任されたアカウントとコレクタ アカウントの AWS IAM ポリシーと AWS IAM ロールを作成する必要があります。

委任されたロールの AWS IAM ポリシーを作成する

委任されたロールの AWS IAM ポリシー(委任ポリシー)を作成するには、次の手順を行います。

  1. AWS 委任アカウント コンソールにログインします。

  2. [Policies] > [Create policy] をクリックします。

  3. [JSON] をクリックして、次の内容を貼り付けます。

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Action": "sts:AssumeRole",
              "Resource": "arn:aws:iam::*:role/COLLECTOR_ROLE_NAME",
              "Effect": "Allow"
          },
          {
              "Action": [
                  "organizations:List*",
                  "organizations:Describe*"
              ],
              "Resource": "*",
              "Effect": "Allow"
          }
      ]
    
    }
    

    COLLECTOR_ROLE_NAME は、Security Command Center の構成時にコピーしたコレクタロールの名前に置き換えます(デフォルトは aws-collector-role)。

  4. [次へ] をクリックします。

  5. [ポリシーの詳細] セクションで、ポリシーの名前と説明を入力します。

  6. [ポリシーの作成] をクリックします。

AWS と Google Cloud 間の信頼関係用の AWS IAM ロールを作成する

AWS と Google Cloud 間の信頼関係を設定する、委任されたロールを作成します。このロールでは、委任されたロールの AWS IAM ポリシーを作成するで作成した委任ポリシーを使用します。

  1. IAM のロールとポリシーを作成できる AWS ユーザーとして AWS デリゲート アカウント コンソールにログインします。

  2. [Roles] > [Create role] をクリックします。

  3. [Trusted entity type] で [Web Identity] をクリックします。

  4. [Identity Provider] で [Google] をクリックします。

  5. [Audience] に、Security Command Center の構成時にコピーしたサービス アカウント ID を入力します。[Next] をクリックします。

  6. 委任されたロールにコレクタのロールへのアクセス権を付与するには、権限ポリシーをロールに接続します。委任されたロールの AWS IAM ポリシーを作成するで作成した委任ポリシーを検索して選択します。

  7. [ロールの詳細] セクションで、Security Command Center の構成時にコピーした委任されたロール名を入力します(デフォルト名は aws-delegated-role です)。

  8. [ロールを作成] をクリックします。

アセットデータの収集用の AWS IAM ポリシーを作成する

アセットデータの収集用の AWS IAM ポリシー(コレクタ ポリシー)を作成するには、次の手順を行います。

  1. AWS コレクタ アカウント コンソールにログインします。

  2. [Policies] > [Create policy] をクリックします。

  3. [JSON] をクリックして、次の内容を貼り付けます。

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ce:GetCostAndUsage",
                  "dynamodb:DescribeTableReplicaAutoScaling",
                  "identitystore:ListGroupMemberships",
                  "identitystore:ListGroups",
                  "identitystore:ListUsers",
                  "lambda:GetFunction",
                  "lambda:GetFunctionConcurrency",
                  "logs:ListTagsForResource",
                  "s3express:GetBucketPolicy",
                  "s3express:ListAllMyDirectoryBuckets",
                  "wafv2:GetIPSet"
              ],
              "Resource": [
                  "*"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "apigateway:GET"
              ],
              "Resource": [
                  "arn:aws:apigateway:*::/usageplans",
                  "arn:aws:apigateway:*::/usageplans/*/keys",
                  "arn:aws:apigateway:*::/vpclinks/*"
              ]
          }
      ]
    
    }
    
  4. [次へ] をクリックします。

  5. [ポリシーの詳細] セクションで、ポリシーの名前と説明を入力します。

  6. [ポリシーの作成] をクリックします。

  7. コレクタ アカウントごとにこの手順を繰り返します。

各アカウントでのデータ収集用の AWS IAM ロールを作成する

Security Command Center が AWS からアセットデータを取得できるようにするコレクタロールを作成します。このロールでは、アセットデータの収集用の AWS IAM ポリシーを作成するで作成したコレクタ ポリシーを使用します。

  1. コレクタ アカウントの IAM ロールを作成できるユーザーとして AWS コレクタ アカウント コンソールにログインします。

  2. [Roles] > [Create role] をクリックします。

  3. [Trusted entity type] で、[Custom trust policy] をクリックします。

  4. [カスタム信頼ポリシー] セクションに、次の内容を貼り付けます。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::DELEGATE_ACCOUNT_ID:role/DELEGATE_ACCOUNT_ROLE"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    次のように置き換えます。

    • DELEGATE_ACCOUNT_ID: 委任アカウントの AWS アカウント ID
    • DELEGATE_ACCOUNT_ROLE: Security Command Center を構成したときにコピーした委任されたロールの名前
  5. AWS アセット構成データへのアクセス権をコレクタロールに付与するには、権限ポリシーをロールに接続します。アセットデータの収集の AWS IAM ポリシーを作成するで作成したカスタム コレクタ ポリシーを検索して選択します。

  6. 次の管理ポリシーを検索して選択します。

    • arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
    • arn:aws:iam::aws:policy/SecurityAudit
  7. [ロールの詳細] セクションで、Security Command Center の構成時にコピーしたコレクタのロール名を入力します。

  8. [ロールを作成] をクリックします。

  9. コレクタ アカウントごとにこの手順を繰り返します。

統合プロセスを完了するには、統合プロセスを完了するをご覧ください。

統合プロセスを完了する

  1. Google Cloud コンソールで、[アマゾン ウェブ サービス コネクタの追加] ページに移動します。

    Amazon Web Services コネクタに移動

  2. [テストコネクタ] をクリックして、Security Command Center が AWS 環境に接続できることを確認します。接続に成功すると、Google Cloud サービス エージェントは委任されたロールを引き受けます。委任されたロールには、コレクタロールを引き継ぐために必要なすべての権限があります。接続に成功しない場合は、接続テスト時のエラーのトラブルシューティングをご覧ください。

  3. [作成] をクリックします。

カスタム構成

このセクションでは、Security Command Center と AWS の間の接続をカスタマイズする方法について説明します。これらのオプションは、[Amazon Web Services コネクタを追加する] ページの [詳細オプション(省略可)] セクションで使用できます(Google Cloud コンソール)。

デフォルトでは、Security Command Center はすべての AWS リージョンで AWS アカウントを自動的に検出します。この接続では、AWS Security Token Service のデフォルトのグローバル エンドポイントと、モニタリングする AWS サービスのデフォルトの秒間クエリ数(QPS)が使用されます。これらの詳細オプションを使用すると、デフォルトをカスタマイズできます。

オプション 説明
使用する AWS アカウントを指定する Security Command Center に AWS アカウントを自動的に検出させることも、Security Command Center がリソースの検索に使用できる AWS アカウントのリストを指定することもできます。
除外する AWS アカウントを指定する Security Command Center がアカウントを自動的に検出できるようにする場合は、Security Command Center がリソースの検索に使用できない AWS アカウントのリストを指定できます。
モニタリングする AWS リージョンを指定する Security Command Center でモニタリングする 1 つ以上の AWS リージョンを選択できます。すべてのリージョンをモニタリングするには、[AWS リージョン] フィールドは空のままにします。
AWS サービスのデフォルトの秒間クエリ数(QPS)をオーバーライドする QPS を変更して、Security Command Center の割り当て上限を制御できます。オーバーライドをそのサービスのデフォルト値よりも小さく、かつ 1 以上の値に設定します。デフォルト値は最大値です。QPS を変更すると、Security Command Center がデータの取得で問題が発生することがあります。そのため、この値の変更はおすすめしません。
AWS Security Token Service のエンドポイントを変更する AWS セキュリティ トークン サービスには、特定のエンドポイント(https://sts.us-east-2.amazonaws.com など)を指定できます。デフォルトのグローバル エンドポイント(https://sts.amazonaws.com)を使用するには、[AWS Security Token Service(AWS STS)(省略可)] フィールドを空白のままにします。

トラブルシューティング

このセクションでは、Security Command Center を AWS と統合する際に発生する可能性がある一般的な問題について説明します。

リソースがすでに存在する

このエラーは、AWS IAM ポリシーと AWS IAM ロールを作成しようとしたときに AWS 環境で発生します。この問題は、AWS アカウントにすでに存在しているロールで、もう一度作成しようとした場合に発生します。

この問題を解決するには、次の操作を行います。

  • 作成するロールまたはポリシーがすでに存在し、このガイドに記載されている要件を満たしているかどうかを確認します。
  • 必要に応じて、競合を避けるためのロール名を変更します。

ポリシー内の無効なプリンシパル

このエラーは、コレクタロールの作成時に AWS 環境で発生する可能性がありますが、委任ロールはまだ存在しません。

この問題を解決するには、委任されたロールの AWS IAM ポリシーを作成するの手順を行い、委任ロールが作成されるまで待ってから操作を続行します。

AWS のスロットリング制限

AWS は、各 AWS アカウントの API リクエストをアカウント単位またはリージョン単位でスロットリングします。Security Command Center が AWS からアセット メタデータを収集するときに、これらの上限を超えないようにするため、Security Command Center は、AWS の API ドキュメントで説明されているように、各 AWS サービスの固定の最大 QPS でデータを収集します。

QPS が消費されたために AWS 環境でリクエストのスロットリングが発生した場合は、次の手順を行うことで問題を軽減できます。

  • AWS コネクタの設定ページで、リクエストのスロットリングの問題が発生している AWS サービスのカスタム QPS を設定します。

  • 特定のサービスからデータが収集されないように、AWS コレクタロールの権限を制限します。この緩和策により、AWS で攻撃パスのシミュレーションが正しく機能しなくなります。

AWS のすべての権限を取り消すと、データコレクタ プロセスが直ちに停止します。AWS コネクタを削除しても、データコレクタ プロセスはすぐに停止されませんが、終了後に再起動されることはありません。

接続テスト時のエラーのトラブルシューティング

これらのエラーは、Security Command Center と AWS の間の接続をテストするときに発生することがあります。

AWS_FAILED_TO_ASSUME_DELEGATED_ROLE

Google Cloud サービス エージェントが委任されたロールを前提とできないため、接続は無効です。

この問題を解決するには、次の点を考慮してください。

AWS_FAILED_TO_LIST_ACCOUNTS

自動検出が有効で、委任されたロールで組織内のすべての AWS アカウントを取得できないため、接続は無効です。

この問題は、委任されたロールで organizations:ListAccounts アクションを許可するポリシーが特定のリソースに存在しないことを示します。この問題を解決するには、欠落しているリソースを確認します。委任されたポリシーの設定を確認するには、委任されたロールの AWS IAM ポリシーを作成するをご覧ください。

AWS_INVALID_COLLECTOR_ACCOUNTS

無効なコレクタ アカウントがあるため、接続が無効です。エラー メッセージには、考えられる原因に関する詳細情報が含まれています。

AWS_FAILED_TO_ASSUME_COLLECTOR_ROLE

委任されたロールでは、コレクタ アカウントのコレクタのロールを想定できないため、コレクタ アカウントは無効です。

この問題を解決するには、次の点を考慮してください。

AWS_COLLECTOR_ROLE_POLICY_MISSING_REQUIRED_PERMISSION

コレクタ ポリシーに必要な権限設定の一部が欠落しているため、接続は無効です。

この問題を解決するには、次の点を考慮してください。

次のステップ