このページでは、Cloud Asset Inventory を使用してシークレットをモニタリングし、分析用にデータをエクスポートし、強力なクエリを実行して必要な分析情報を取得する方法について説明します。
概要
Cloud Asset Inventory は Google Cloud 環境を分析し、仮想マシン、データベース、ストレージ バケットなどのクラウド リソース(このコンテキストでは Secret Manager シークレット)の変更を記録します。Secret Manager と Cloud Asset Inventory を統合すると、次のことができます。
-
クエリを実行する: 特定のシークレットを検索したり、シークレット全体でパターンを特定したりできます。
-
アラートを設定する: シークレットの作成、変更、削除など、特定のイベントが発生したときに Pub/Sub に通知を送信するように Cloud Asset Inventory を構成します。
-
データをエクスポートする: シークレット インベントリを BigQuery にエクスポートして、詳細な分析とレポートを作成します。
-
シークレットの管理と分析: プロジェクトと組織全体のすべてのシークレットを 1 か所で確認し、構成ミスがあるシークレットや組織のセキュリティ ポリシーに違反しているシークレットを特定します。たとえば、定期的にローテーションされていないシークレットや、適切なアクセス制御が設定されていないシークレットを見つけることができます。
これは Secret Manager ユーザー向けの上級者向けタスクです。このページを読む前に、次の記事を読むことをおすすめします。
-
Secret Manager の概要を確認して、Secret Manager の主なコンセプトと機能を理解する
-
Cloud Asset Inventory の概要を確認して、Cloud Asset Inventory を理解し、その包括的なアセット管理機能を確認する
Secret Manager へのクエリ
SQL に似たクエリでシークレットを分析するには、シークレットとシークレット バージョンを BigQuery にエクスポートすることをおすすめします。Secret Manager は、Asset Search または Policy Analyzer と統合されていません。これらのクエリは、Google Cloud CLI と BigQuery を使用してアセットを検索します。
制限事項
Cloud Asset Inventory を使用して Secret Manager リソースを分析する場合、次の制限があります。
-
Cloud Asset Inventory では、過去 5 週間のスナップショットのエクスポートと一覧表示のみがサポートされています。
アセットの変更をモニタリングする
Cloud Asset Inventory はリアルタイムの更新を追跡し、これらの変更のモニタリングをサポートしています。リソースが変更されるたびに、一連の構成された Pub/Sub トピックに通知を送信するようにフィードを構成できます。また、Cloud Asset Inventory はフィードで条件の構成をサポートしているため、特定のアセットタイプの特定の変更をモニタリングすることができます。アセットの変更時にワークフローをトリガーする方法については、Pub/Sub ドキュメントをご覧ください。
アセットを BigQuery にエクスポートする
シークレットとシークレット バージョンを BigQuery にエクスポートすると、大量のデータに対して SQL に似たクエリを実行し、アセットに関する有意な分析情報を生成できます。アセットをエクスポートする前に、データセットとサービス アカウントが正しく構成されていることを確認してください。
アセットをエクスポートするには、次のコマンドを実行します。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- CONTENT_TYPE: アセットのコンテンツ タイプ(
RESOURCE
)。 - PROJECT_ID: 分析するシークレットを含むプロジェクトの ID。
- SNAPSHOT_TIME: リソースのスナップショットを作成する時間。これは、現在の時刻から過去 5 週間以内にする必要があります。
- BIGQUERY_PROJECT_ID: BigQuery テーブルが存在するプロジェクトの ID。
- DATASET_ID: BigQuery データセットの ID。
- TABLE_NAME: メタデータのエクスポート先のテーブル。存在しない場合は作成されます。
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud asset export \ --content-type=CONTENT_TYPE \ --project=PROJECT_ID \ --snapshot-time=SNAPSHOT_TIME \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --output-bigquery-force
Windows(PowerShell)
gcloud asset export ` --content-type=CONTENT_TYPE ` --project=PROJECT_ID ` --snapshot-time=SNAPSHOT_TIME ` --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME ` --output-bigquery-force
Windows(cmd.exe)
gcloud asset export ^ --content-type=CONTENT_TYPE ^ --project=PROJECT_ID ^ --snapshot-time=SNAPSHOT_TIME ^ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME ^ --output-bigquery-force
詳細については、BigQuery へのエクスポートをご覧ください。
サンプルクエリ
次のサンプルクエリを使用して、特定のプロパティを持つシークレットとシークレット バージョンを検索します。
過去 2 週間以内に作成されたリージョン シークレット
過去 2 週間に組織に追加されたシークレット(およびそのプロパティ)を見つけます。
BigQuery
SELECT name, FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location <> "global" AND DATE(JSON_VALUE(resource.data, '$.createTime')) > DATE_SUB(CURRENT_DATE(), INTERVAL 2 WEEK);
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.createTime>-P2W"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.createTime>-P2W"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.createTime>-P2W"
特定のロケーションのリージョン シークレット
特定のロケーション(us-central1
など)に保存されているすべてのシークレットを検索します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location = "us-central1";
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
- LOCATION: シークレットの Google Cloud ロケーション
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location = LOCATION AND resource.data.createTime>-P2W"
180 日以上前に作成されたリージョン シークレット バージョン
180 日より前に作成されたすべてのシークレット バージョンを一覧表示します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/SecretVersion' resource.location <> "global" AND DATE(JSON_VALUE(resource.data, '$.createTime')) < DATE_SUB(CURRENT_DATE(), INTERVAL 180 DAY) AND JSON_VALUE(resource.data, '$.state') = "ENABLED";
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/SecretVersion' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/SecretVersion' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/SecretVersion' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.createTime < P6M AND resource.data.state = ENABLED"
CMEK が構成されていないリージョン シークレット
顧客管理暗号鍵(CMEK)で暗号化されていないすべてのシークレットを一覧表示します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' resource.location <> "global" AND JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.customerManagedEncryption = NULL"
CMEK が構成されたリージョン シークレット
CMEK で暗号化されたすべてのシークレットを一覧表示します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' resource.location <> "global" AND JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") IS NOT NULL;
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.customerManagedEncryption != NULL"
特定の CMEK で暗号化されたリージョン シークレット
特定の CMEK で暗号化されたシークレットを検索します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' resource.location <> "global" AND JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyName") = KMS_KEY_NAME;
次のように置き換えます。
-
BIGQUERY_TABLE: このドキュメントのBigQuery にアセットをエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパス。
-
KMS_KEY_NAME: 鍵の ID または完全修飾識別子
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
- KMS_KEY_NAME: 鍵の ID または完全修飾識別子
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud beta asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud beta asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud beta asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.customerManagedEncryption.kmsKeyName=KMS_KEY_NAME"
CMEK が構成されていないリージョン シークレット バージョン
CMEK で暗号化されていない有効なシークレット バージョンをすべて検索します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/SecretVersion' resource.location <> "global" AND JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") IS NULL AND JSON_VALUE(resource.data, "$.state") = "ENABLED";
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/SecretVersion' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/SecretVersion' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/SecretVersion' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = NULL) AND resource.data.state=ENABLED"
特定の CMEK で暗号化されたリージョン シークレット バージョン
特定の CMEK バージョンで暗号化された有効なシークレット バージョンをすべて一覧表示します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/SecretVersion' resource.location <> "global" AND JSON_VALUE(resource.data, "$.customerManagedEncryption.kmsKeyVersionName") = KMS_KEY_VERSION_NAME AND JSON_VALUE(resource.data, "$.state") = "ENABLED";
次のように置き換えます。
-
BIGQUERY_TABLE: このドキュメントのBigQuery にアセットをエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパス。
-
KMS_KEY_VERSION_NAME: Cloud Key Management Service 鍵のバージョン番号
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/SecretVersion' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/SecretVersion' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/SecretVersion' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="(resource.location != global AND resource.data.customerManagedEncryption.kmsKeyVersionName = KMS_KEY_VERSION_NAME) AND resource.data.state=ENABLED"
ローテーションが構成されていないリージョン シークレット
ローテーション スケジュールがないすべてのシークレットを検索します。
BigQuery
SELECT name FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location <> "global" AND JSON_EXTRACT(resource.data, '$.rotation') IS NULL;
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.rotation = NULL"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.rotation = NULL"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.rotation = NULL"
特定のローテーション期間を持つリージョン シークレット
90 日間に 1 回未満のローテーションがスケジュールされているすべてのシークレットを検索します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location <> "global" AND CAST( TRIM( JSON_VALUE(JSON_EXTRACT(resource.data, "$.rotation.rotationPeriod")),"s") AS INT64) < 86400 * 90 #Rotation period in seconds (86400s in 1 day * 90 days)
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 分析するシークレットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60)) gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60)) gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") ROTATION_PERIOD_SECONDS=$((90 * 24 * 60 * 60)) gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.rotation != null AND resource.data.rotation.rotationPeriod <= ${ROTATION_PERIOD_SECONDS}s"
30 日以内に期限切れになるリージョン シークレット
30 日以内に期限切れになるシークレットを一覧表示します。
BigQuery
SELECT * FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location <> "global" AND DATE(JSON_VALUE(resource.data, '$.expireTime')) < DATE_ADD(CURRENT_DATE(), INTERVAL 30 DAY);
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: モニタリング対象のアセットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.expireTime < PD30"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.expireTime < PD30"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.expireTime < PD30"
Pub/Sub トピックが構成されているリージョン シークレット
少なくとも 1 つの Pub/Sub トピックが構成されているすべてのシークレットを一覧表示します。
BigQuery
SELECT name, ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) AS topics_count, FROM BIGQUERY_TABLE WHERE asset_type='secretmanager.googleapis.com/Secret' AND resource.location <> "global" AND ARRAY_LENGTH(JSON_EXTRACT_ARRAY(resource.data, '$.topics')) > 0
BIGQUERY_TABLE は、このドキュメントのアセットを BigQuery にエクスポートするセクションで、すべてのアセットをエクスポートした BigQuery テーブルのフルパスに置き換えます。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- PROJECT_ID: モニタリング対象のアセットを含むプロジェクトの ID
次のコマンドを実行します。
Linux、macOS、Cloud Shell
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID \ --asset-types='secretmanager.googleapis.com/Secret' \ --snapshot-time=$NOW \ --content-type='resource' \ --filter="resource.location != global AND resource.data.topics != NULL"
Windows(PowerShell)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ` --asset-types='secretmanager.googleapis.com/Secret' ` --snapshot-time=$NOW ` --content-type='resource' ` --filter="resource.location != global AND resource.data.topics != NULL"
Windows(cmd.exe)
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ") gcloud asset list --project=PROJECT_ID ^ --asset-types='secretmanager.googleapis.com/Secret' ^ --snapshot-time=$NOW ^ --content-type='resource' ^ --filter="resource.location != global AND resource.data.topics != NULL"
次のステップ
- ベスト プラクティスについて確認する。