GCP プロジェクトの接続
個別の GCP プロジェクトを Tenable に接続して、そのクラウドリソースとセキュリティポスチャーをモニタリングします。組織内のすべてのプロジェクトを一度に接続するには、 GCP 組織の接続を参照してください。
前提条件
始める前に
- Google Cloud コンソールでプロジェクトの作成、サービスアカウントの作成、サービスアカウントの承認、ログの有効化を行うユーザーに適切なアクセス許可を付与します。
- VPC Service Controls を使用して Google が管理するサービスへのアクセスを制限する場合、例外を定義して Tenable にネットワークアクセスを許可する必要があります。
- 組織に IAM ポリシーでプリンシパルとしての Tenable をブロックするドメイン制限ポリシーがないことを確認してください。このポリシーがある場合は、Tenable を許可されたドメインとして追加するします。
- Tenable が使用するサービスアカウントをホストする Google 組織 (そのすべてのプロジェクトを含む) ごとに専用のプロジェクトを作成します。
- Google Cloud コンソールで専用プロジェクトの請求を有効にします。手順については、請求の有効化に関する Google のドキュメントを参照してください。
- API スロットリングの防止。GCP は、プロジェクトレベルで API レート制限を適用します。他のサービスアカウントとプロジェクトを共有すると、制限に達してブロックされるリスクが高まります。
- 経費の分離。 共有プロジェクトでは、請求データや使用状況データが不明瞭になり、Tenable サービスアカウントによって生成されたコストを正確に追跡することが難しくなります。
プロジェクトの接続
- 親組織の統合が Tenable に存在する場合: 一部のセクションには、組織レベルで管理されるフィールドが含まれます。これらのフィールドを変更するには、組織の統合を編集します。
- 親組織の統合が Tenable に存在しない場合: 一部のセクションには、組織のすべてのプロジェクト統合で共有されるフィールドが含まれます。これらのフィールドは、統合の編集時にのみ変更できます。
GCP プロジェクトを接続する方法
- Tenable One Cloud Exposure コンソールで、[設定] > [統合] の順に移動し、[統合を追加] をクリックします。
- 統合ライブラリで、[GCP プロジェクト] をクリックします。[GCP プロジェクト] ウィザードが開きます。
-
ウィザードで次の操作を実行します。
- 接続する GCP プロジェクトのプロジェクト ID を入力します。
- 組織 ID を入力します。クラウドサイバーエクスポージャー は現在、組織に含まれないプロジェクトをサポートしていません。
[Google Workspace] で、既存の Google Workspace 統合を使用するかどうかを選択します。統合が存在しない場合は、[作成] をクリックして作成できます。
注意: Tenable では、アイデンティティ関連の可視性と完全なリスク評価を可能にするために、組織の Google Workspace を使用することを推奨しています。これにより以下が可能になります。- ユーザー、アクセス許可、最小権限の分析など、アイデンティティ関連の情報を可視化し、GCP クラウド環境全体のより包括的なリスク評価が可能になります。
- アイデンティティ、アクセス許可、アクセス関係を可視化できるため、リソースの可視化に加えて、セキュリティポスチャー管理も強化されます。
- [機能] で、有効にする機能を選択します。この選択により、必要なアクセス許可が決定され、デプロイメントスクリプトが動的に更新されます。Tenable では、最も包括的なセキュリティカバレッジを提供するために、すべての機能を有効にすることを推奨しています。詳細については、Google の必要なアクセス許可を参照してください。
- [デプロイメント] で、次のいずれかのデプロイオプションを選択します。
- Cloud Shell - スクリプトベースのデプロイメント。
- 管理プロジェクト ID を入力します。これは、この統合のサービスアカウントをホストする前提条件の ID です。
- クラウドサイバーエクスポージャー ウィザードに表示されるスクリプトをコピーし、スクリプトの内容を含むファイルを作成します。次に、それを Cloud Shell で実行し、クラウドサイバーエクスポージャー に必要なアクセス許可を付与します。
手動 - Google Cloud コンソールを使用し、手動で設定します。詳細な手順については、GCP プロジェクトの手動デプロイを参照してください。
警告: 手動デプロイメントが完了したら、ウィザードに戻り、デプロイメント後の手順を完了します。
- Cloud Shell - スクリプトベースのデプロイメント。
[デプロイメント後] に、次の値を入力します。
注意:
- 値を取得する方法
- Cloud Shell: スクリプトの出力から値をコピーして貼り付けます。
- 手動: これらの値を取得する方法については、GCP プロジェクトの手動デプロイを参照してください。
- 共通の統合値
- これらの値は、同一組織内のすべてのプロジェクトで同じである必要があります。
- 親組織の統合が存在する場合、これらのフィールドは組織レベルで管理されます。変更は、すべてのメンバープロジェクトに自動的に適用されます。
- 値を取得する方法
- サービスアカウントのメール
- Pub/Sub サブスクリプション名
- [終了] をクリックします。
次の手順
プロジェクトが正常に追加された後
- プロジェクトは、[アカウント] > [GCP] ページで確認できます。ここからアカウントやプロジェクトの詳細を表示して、どの機能が有効になっているか、必要なアクセス許可が付与されているか、などを確認できます。
プロジェクトリソースに関するデータが クラウドサイバーエクスポージャー に表示されるようになります。すべてのデータが表示されるまでにかかる時間は、クラウド環境の規模によって異なります。
GCP プロジェクトの手動デプロイ
スクリプトベースのデプロイメントの代わりに、Google Cloud コンソールから GCP プロジェクトを手動でデプロイすることもできます。これは、GCP プロジェクトを接続する際にデプロイメントタイプとして手動を選択した場合の手順です。
- Tenable のサービスアカウントを作成する
- 組織レベルでサービスアカウントを承認する
- プロジェクトレベルでサービスアカウントを承認する
- 監査ログを設定する
- 組織レベルのアクセス許可を持つカスタムロールを作成する
Tenable のサービスアカウントを作成する
Tenable がプロジェクトへのアクセスとモニタリングに使用する専用の GCP プロジェクトとサービスアカウントを作成します。
- Google Cloud コンソールで、作成した前提条件に移動します。
- [IAM & Admin] > [Roles] に移動し、[+ Create custom role] をクリックします。
- タイトル、説明、ID を入力します。
- [+ Add permissions] をクリックし、「Required Permissions」 の [Create Service Account] にリストされているアクセス許可を追加します。
- [Create] をクリックしてロールの作成を完了します。
- [IAM & Admin] > [Service Accounts] に移動し、[+ Create service account] をクリックします。
- [Service account name]、[ID]、[Description] を入力します。
- 生成されたサービスアカウントのメールをコピーして保存します。この値は、クラウドサイバーエクスポージャー に 組織の接続ときに、ウィザードの [デプロイメント後] セクションに入力する必要があります。
- [Create and continue] をクリックします。
- 作成したカスタムロールを選択して、[Continue]、[Done] をクリックします。
-
新しく作成したサービスアカウントを選択し、[Principals with access] タブ、[Grant access] の順にクリックします。
重要: アクセス権を付与できない場合は、IAM ポリシーでプリンシパルとして Tenable を選択できないようにするドメイン制限制約を含む組織ポリシーが存在している可能性があります。これにより、Tenable では作成されたサービスアカウントのなりすましが防止されます。この場合は、Tenable を許可されたドメインとして追加するで説明されている手順に従います。 - [Add principals] セクションで、[email protected] を [New principals] フィールドに入力します。
- [Assign roles] セクションで、[Service Account Token Creator] ロールを選択し、[Save] をクリックして終了します。
- [IAM & Admin] > [Labels] に移動し、[+ Add label] をクリックし、クラウドサイバーエクスポージャー ウィザードに表示されるキーと値のペアを追加します。
- ラベルキー: ermetic-external-id
- 値: クラウドサイバーエクスポージャー ウィザードの [デプロイメント] セクションに表示
- [Save] をクリックしてサービスアカウントの作成を完了します。
組織レベルでサービスアカウントを承認する
GCP 環境の評価とモニタリングを行うために Tenable が必要とする組織レベルのアクセス許可をサービスアカウントに付与します。
この手順におけるロールバインディングは、Tenable のベストプラクティスの推奨事項に従って、組織レベルで付与されます。組織全体の接続を予定していない場合 (たとえば試用版の一部である場合)、Tenable は、代わりにプロジェクトレベルでこのロールバインディングの付与をサポートします。その場合も、カスタムロールを通じて組織レベルの基本的なアクセス許可セットを付与し、統合を完了するために サポートへの問い合わせ。 する必要があります。詳細については、GCP の FAQ を参照してください。
- Google Cloud コンソールで、画面の左上にあるプロジェクトピッカーを使用して、Tenable に接続する組織を選択します。
- [IAM & Admin] > [IAM] に移動し、[Grant access] をクリックします。
- [Add principals] セクションで、先ほど保存したサービスアカウントのメールを [New principals] フィールドに入力します。
-
[Assign roles] セクションで、次のロールを追加します。
- Cloud Asset Viewer
- Security Reviewer
- Organization Policy Viewer
- Organization Viewer
- [Save] をクリックして終了します。
プロジェクトレベルでサービスアカウントを承認する
プロジェクトのスキャンとモニタリングを行うために Tenable が必要とするプロジェクトレベルのアクセス許可をサービスアカウントに付与します。
- Google Cloud コンソールで、画面の左上にあるプロジェクトピッカーを使用して、関連するプロジェクトを選択します。
- [IAM & Admin] > [IAM] に移動し、[Grant access] をクリックします。
- [Add principals] セクションで、先ほど保存したサービスアカウントのメールを [New principals] フィールドに入力します。
- [Assign roles] セクションで、必要な機能に応じて関連するロールを選択します。
-
[Save] をクリックして終了します。
注意: [機能] セクションでワークロード保護を有効にした場合は、ワークロード保護のアクセス許可を付与する追加の手順を行います。詳細については、関連するワークロード保護のドキュメントを参照してください。
監査ログを設定する
Pub/Sub トピック、ログシンク、サブスクリプションを設定して、GCP 監査ログを Tenable にストリーミングします。
- Google Cloud コンソールで、プロジェクトピッカーを使用して関連するプロジェクトを選択し、次の手順に従って Pub/Sub トピックを作成します。
- [Pub/Sub] > [Topics] に移動し、[+ Create topic] をクリックします。
- [Topic ID] フィールドに tenable-audit-logs を入力します。
- [Add a default subscription] のチェックを外します。
- [Enable message retention] を選択し、期間を 1 日以上に設定します。
- [Create] をクリックします。
-
次の手順に従って Pub/Sub サブスクリプションを作成します。
- [Pub/Sub] > [Subscriptions] に移動し、[+ Create subscription] をクリックします。
- [Subscription ID] フィールドに tenable-audit-logs-sub を入力します。
- 先ほど作成したトピックを選択します。
- [Delivery type] セクションで、[Pull] を選択します。
- [Message retention duration] セクションで、期間を 1 日以上に設定します。
- [Retry policy] セクションで、[Retry after exponential backoff delay] を選択し、デフォルト値のままにします。
- [Expiration period] セクションで、[Never expire] を選択します。
- [Create] をクリックします。
- 新しく作成されたサブスクリプションの [Permissions] タブで、[Add principal] をクリックします。
- [Add principals] セクションで、先ほど保存したサービスアカウントのメールを [New principals] フィールドに入力します。
- [Assign roles] セクションで、[Pub/Sub Subscriber] ロールを選択し、[Save] をクリックして終了します。
- Pub/Sub サブスクリプション名をコピーして保存します。この値は、クラウドサイバーエクスポージャー に プロジェクトの接続ときに、ウィザードの [デプロイメント後] セクションに入力する必要があります。
-
次の手順に従ってログシンクを作成します。
- [Logging] > [Configure] > [Log router] に移動します。
- [Create sink] をクリックします。
- [Sink name] フィールドに tenable-audit-logs を入力し、[Next] をクリックします。
- シンクサービスについて、 [Cloud Pub/Sub topic] と関連するトピックを選択し、[Next] をクリックします。
包含フィルターに以下を貼り付けます。
コピーLOG_ID(cloudaudit.googleapis.com/activity) OR
LOG_ID(cloudaudit.googleapis.com/data_access) OR
LOG_ID(cloudaudit.googleapis.com/policy)- [Next] をクリックします。
- [+ Add exclusion] をクリックします。
[Exclusion filter name] フィールドで、exclude-k8s-internal を入力し、以下を除外フィルターに貼り付けます。
コピーprotoPayload.authenticationInfo.principalEmail-:* OR
protoPayload.authenticationInfo.principalEmail=~"^system:" OR
protoPayload.authenticationInfo.principalEmail=~"@container-engine-robot.iam.gserviceaccount.com$" OR
protoPayload.authenticationInfo.principalEmail=~"@security-center-api.iam.gserviceaccount.com$"- [Create sink] をクリックします。
組織レベルのアクセス許可を持つカスタムロールを作成する
上記の手順では、クラウドサイバーエクスポージャー のベストプラクティスに従って、ロールバインディングが組織レベルで付与されます。ただし、どの時点でも組織全体の接続を予定していない場合 (たとえば試用版の一部である場合)、クラウドサイバーエクスポージャー は、代わりにプロジェクトレベルでこのロールバインディングの付与をサポートします。プロジェクトレベルでロールバインディングを付与することにした場合でも、クラウドサイバーエクスポージャー では、組織レベルでの基本的なアクセス許可セットの付与が必要です。
カスタムロールを作成する方法
- Google Cloud コンソールで、画面の左上にあるプロジェクトピッカーを使用して、関連する組織を選択します。
- [IAM & Admin] > [Roles] に移動し、[+ Create custom role] をクリックします。
- タイトル、説明、ID を入力します。
- [+ Add permissions] をクリックし、「Org-Level Custom Role for Single-Project Connections」 に一覧表示されているアクセス許可を追加します。
- [Create] をクリックしてロールの作成を完了します。
- 組織レベルで、Tenable サービスアカウントにカスタムロールを追加します。
カスタムロールの作成についての詳細は、関連する Google Cloud ドキュメントを参照してください。個別のプロジェクトを接続する際に、クラウドサイバーエクスポージャー に組織レベルのアクセス許可が必要な理由についての詳細は、GCP の FAQ を参照してください。