Google Cloud 組織のログを管理するには、組織全体のログを 1 つの Cloud Logging バケットに集約します。
このドキュメントでは、組織の監査ログを集約する例を使用して、そのプロセスについて説明します。
このプロセスには、次のステップが含まれます。
集約されたログを保存する Cloud Logging バケットを作成する。
組織レベルでシンクを作成し、新しいバケットにログを転送する。
新しいバケットへの読み取りアクセスを構成する
[ログ エクスプローラ] ページからログを検索する。
始める前に
このガイドの手順を完了するには、以下のことを確認する必要があります。
ログの収集先の Cloud プロジェクト。このガイドの例では、logs-test-project という Cloud プロジェクトを使用します。
ログを集約する Logging バケットの名前とロケーション。この例では、バケット名は all-audit-logs-bucket、場所は global です。
集約対象のログ。この例では、すべての監査ログ
logName:cloudaudit.googleapis.com
が含まれます。ログを収集するシンクの名前は何ですか?この例では、シンク名は all-audit-logs-sink です。
組織番号。この例では、組織番号は 12345 です。
バケットの作成
Cloud Logging バケットには、他の Cloud プロジェクト、フォルダ、または組織から転送されたログが保存されます。詳細については、ログバケットの構成と管理をご覧ください。
ログを集約する Cloud プロジェクトでバケットを作成するには、次の手順を実行します。
ログの集約に使用している Cloud プロジェクトで Google Cloud Console を開きます。
Cloud Shell ターミナルで次のコマンドを実行してバケットを作成し、変数を適切な値に置き換えます。
gcloud logging buckets create all-audit-logs-bucket \ --location=global \ --project=logs-test-project
バケットが作成されたことを確認します。
gcloud logging buckets list --project=logs-test-project
(省略可)バケット内のログの保持期間を設定します。この例では、バケットに保存されたログの保持期間を 365 日間延長します。
gcloud logging buckets update all-audit-logs-bucket --location=global --project=logs-test-project --retention-days=365
シンクを作成する
シンクを作成して、ログをバケットに転送できます。シンクには、転送するログエントリを選択する包含フィルタと宛先が含まれます。このガイドでは、宛先は、バケット all-audit-logs-bucket です。
組織レベルでシンクを設定する
シンクを作成するには、次の手順に従います。
次のコマンドを実行し、変数を適切な値に置き換えます。
gcloud logging sinks create all-audit-logs-sink \ logging.googleapis.com/projects/logs-test-project/locations/global/buckets/all-audit-logs-bucket \ --log-filter='logName:cloudaudit.googleapis.com' \ --description="All audit logs from my org log sink" \ --organization=12345 \ --include-children
--include-children
フラグは、組織内のすべての Cloud プロジェクトのログも含まれるようにするうえで重要です。詳細については、集約シンクを構成するをご覧ください。シンクが作成されたことを確認します。
gcloud logging sinks list --organization=12345
サービス アカウントの名前を取得します。
gcloud logging sinks describe all-audit-logs-sink --organization=12345
出力は次のようになります。
writerIdentity: serviceAccount:p1234567890-12345@gcp-sa-logging.iam.gserviceaccount.com
serviceAccount: で始まる
writerIdentity
の文字列全体をコピーします。
シンクの権限を設定する
シンクを作成したら、シンクにバケットへの書き込みアクセス権を付与する必要があります。これを行うには、Cloud Console を使用するか、バケットの構成と管理の説明に沿って、Identity and Access Management(IAM)ポリシーを手動で編集します。
このガイドでは、次の手順で Cloud Console を使用して権限を設定します。
Cloud Console で [IAM] ページに移動します。
ログの集約に使用している組織レベルのバケットが含まれている、エクスポート先の Cloud プロジェクトが選択されていることを確認します。
[追加] をクリックします。person_add
[新しいプリンシパル] フィールドに、
serviceAccount:
接頭辞を付けずにサービスアカウントを追加します。[ロールを選択] プルダウン メニューで [ログバケット書き込み] を選択します。
[保存] をクリックします。
シンク検証に役立つログを生成する
シンクが監査ログを使用している場合、シンクがログを正しくルーティングしていることを確認する 1 つの方法は、別の Cloud プロジェクトで VM を起動し、その VM を停止して、このイベントがログに表示されるかどうかを確認することです。
組織内にすでに多数の Cloud プロジェクトが存在する場合は、このステップを必要としない監査ログのトラフィックが十分にある可能性があります。
新しいバケットへの読み取りアクセス権を構成する
シンクが組織全体からバケットにログをルーティングするように設定したため、これらのログをすべて検索できる状態になりました。新しいバケットでビューを表示するには、特に roles/logging.viewAccessor
IAM ロールを追加して、読み取りアクセス権を付与する必要があります。
このガイドでは、次の手順で Cloud Console を使用して権限を設定します。
Cloud Console で [IAM] ページに移動します。
ログの集約に使用している Cloud プロジェクトが選択されていることを確認します。
[追加] をクリックします。person_add
[新しいプリンシパル] 項目に、メール アカウントを追加します。
[役割を選択] プルダウン メニューで [ログビュー アクセサー] を選択します。
このロールは、新しく追加されたプリンシパルに、Cloud プロジェクト内のすべてのバケットのすべてのビューへの読み取りアクセス権を付与します。ユーザーのアクセスを制限するには、既存のログビューを作成または選択し、新しいバケットからユーザーに読み取り専用を許可する条件を追加します。
[条件を追加] をクリックします。
条件の [タイトル] と [説明] を入力します。
[条件タイプ] のプルダウン メニューで、[リソース] > [名前] を選択します。
[演算子] のプルダウン メニューから [次で終わる] を選択します。
[値] フィールドに、バケットのロケーション、バケット ID のバケット名の部分、ビュー ID を入力します。
次に例を示します。
locations/global/buckets/all-audit-logs-bucket/view/view_id
[保存] をクリックして、条件を追加します。
[保存] をクリックして、権限を設定します。
[ログ エクスプローラ] ページからログを検索する
前のセクションで権限を設定したら、Cloud Console に移動し、次の手順を行います。
ログの集約に使用している Cloud プロジェクトの [Logging] メニューから、[ログ エクスプローラ] を選択します。
[範囲を絞り込む] を選択します。
[範囲を絞り込む] パネルで、[ストレージごとのスコープ] を選択します。
all-audit-logs-bucket を選択します。
[適用] をクリックします。
[ログ エクスプローラ] が更新され、バケットのログが表示されます。
ログ エクスプローラの使用方法については、ログ エクスプローラの使用をご覧ください。