監査関連ジョブ機能の IAM ロール

このトピックでは、一連のサンプル監査シナリオで Identity and Access Management 権限を構成する方法について説明します。シナリオに応じて企業内の監査関連の機能役割にどのような IAM のロールを付与するかについて、ガイダンスを提供します。この例は主に、組織の監査タスクを管理するセキュリティ管理者、監査担当者、従業員を対象としています。

Google Cloud の監査ログについては、Cloud Audit Logs をご覧ください。IAM によって生成される監査ログについては、サービス アカウントの IAM 監査ロギングをご覧ください。

シナリオ: 運用のモニタリング

このシナリオでは、組織に、Cloud Logging と長期的ストレージに保存する場合の両方で、機密情報を含む可能性のあるログを確認する権限を持つ中央セキュリティ チームがあります。

履歴監査データは Cloud Storage に保存されています。組織はアプリケーションを使用して、履歴監査データへのアクセスを提供します。アプリケーションはサービス アカウントを使用して、ログデータにアクセスします。一部の監査ログデータは機密保持が必要であるため、Sensitive Data Protection を使用して編集した後で、表示のためにアクセスできるようにします。

次の表は、CTO、セキュリティ チーム、サービス アカウントに付与する必要がある IAM ロールと、ロールが付与されるリソースレベルについて説明しています。

ロール リソース プリンシパル 説明
resourcemanager.organizationAdmin 組織 CTO(最高技術責任者) resourcemanager.organizationAdmin ロールにより、CTO は、セキュリティ チームとサービス アカウントに権限を割り当てることができます。
logging.viewer 組織 セキュリティ チーム logging.viewer ロールにより、セキュリティ管理チームは、管理アクティビティ ログを表示できます。
logging.privateLogViewer 組織 セキュリティ チーム logging.privateLogViewer ロールにより、データアクセス ログを表示できます。

ログエントリがエクスポートされると、エクスポートされたコピーへのアクセスは、エクスポート先の Cloud Storage、BigQuery、Pub/Sub に対する IAM の権限とロールによって全面的に制御されます。このシナリオでは、Cloud Storage が監査ログの長期間ストレージのエクスポート先になります。

ロール リソース プリンシパル 説明
logging.viewer 組織 サービス アカウント logging.viewer ロールにより、サービス アカウントは Cloud Logging の管理アクティビティ ログの読み取りが許可されます。

データアクセス ログ内のデータは、この組織の個人を特定できる情報(PII)とみなされます。アプリケーションを Sensitive Data Protection と統合すると、データアクセス ログを表示した際に、それらがデータアクセス ログにあるか、Cloud Storage の履歴アーカイブにあるかにかかわらず、機密の PII データを編集できます。

ロール リソース プリンシパル 説明
storage.objectViewer バケット サービス アカウント storage.objectViewer ロールにより、サービス アカウントはエクスポートされた管理アクティビティ ログの読み取りが許可されます。

このシナリオで組織リソースに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/resourcemanager.organizationAdmin",
      "members": [
        "user:cto@example.com"
      ]
    },
    {
      "role": "roles/logging.viewer",
      "members": [
        "group:security-team@example.com",
        "serviceAccount:prod-logviewer@admin-resources.iam.gserviceaccount.com"
      ]
    },
    {
      "role": "roles/logging.privateLogViewer",
      "members": [
        "group:security-team@example.com"
      ]
    }
  ]
}

このシナリオで宛先シンクとして構成されているバケットに関連付けられている許可ポリシーは次のようになります。

{
  "bindings": [{
    "role": "roles/storage.objectViewer",
    "members": [
      "serviceAccount:prod-logviewer@admin-resources.iam.gserviceaccount.com"
    ]
  }]
}

シナリオ: 監査ログをモニタリングする開発チーム

このシナリオでは、組織の開発者はアプリケーションの開発中に生成された監査ログを調べる必要があります。本番環境のログが Sensitive Data Protection で編集されていない限り、デベロッパーにはそれらを確認する権限がありません。デベロッパーは、エクスポートされた本番環境のデータへの表示専用アクセスを提供するダッシュボード アプリケーションを使用できます。組織のセキュリティ チームは、本番環境と開発環境のどちらでもすべてのログにアクセスできます。

次の表は、セキュリティ チーム、デベロッパー、サービス アカウントに付与する必要がある IAM ロールと、ロールが付与されるリソースレベルについて説明しています。

ロール リソース プリンシパル 説明
logging.viewer 組織 セキュリティ チーム logging.viewer ロールにより、セキュリティ管理チームは、管理アクティビティ ログを表示できます。
logging.privateLogViewer 組織 セキュリティ チーム logging.privateLogViewer ロールにより、データアクセス ログを表示できます。
logging.viewer フォルダ デベロッパー チーム logging.viewer ロールにより、デベロッパー チームは、すべてのデベロッパー プロジェクトが存在するフォルダに格納されているデベロッパー プロジェクトによって生成された管理アクティビティ ログを表示できます。
logging.privateLogViewer フォルダ デベロッパー チーム logging.privateLogViewer ロールにより、データアクセス ログを表示できます。

エクスポートされたコピーへのアクセスは、Cloud Storage、BigQuery、Pub/Sub のいずれかの IAM 権限とロールによって全面的に制御されます。このシナリオでは、BigQuery が監査ログのストレージとしてのエクスポート先になります。

ロール リソース プリンシパル 説明
bigquery.dataViewer BigQuery データセット ダッシュボード サービス アカウント bigquery.dataViewer ロールにより、ダッシュボード アプリケーションによって使用されるサービス アカウントは、エクスポートされた管理アクティビティ ログの読み取りが許可されます。

このシナリオで開発チームのフォルダ リソースに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/logging.viewer",
    "members": [
      "group:developer-team@example.com"
    ]
  },
  {
    "role": "roles/logging.privateLogViewer",
    "members": [
      "group:developer-team@example.com"
    ]
  }]
}

このシナリオで組織リソースに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/logging.viewer",
    "members": [
      "group:security-team@example.com"
    ]
  },
  {
    "role": "roles/logging.privateLogViewer",
    "members": [
      "group:security-team@example.com"
    ]
  }]
}

このシナリオで宛先シンクとして構成されている BigQuery データセットに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/bigquery.dataViewer",
    "members": [
      "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceaccount.com"
    ]
  }]
}

シナリオ: 外部監査者

このシナリオでは、組織の監査ログが集約され、中央シンクの場所にエクスポートされます。第三者の監査者には、組織の監査ログを確認するために年に数回アクセス権が与えられます。監査者には、管理アクティビティ ログ内の PII データを表示する権限はありません。この要件を満たすため、BigQuery に保存されている履歴ログ、および必要に応じて Cloud Logging 管理アクティビティ ログにアクセスできるダッシュボードが用意されています。

組織で、このような外部監査者に Google グループを作成し、そのグループに現在の監査者を追加します。このグループはモニタリングされ、通常はダッシュボード アプリケーションへのアクセスが許可されます。

通常のアクセスでは、監査者の Google グループには BigQuery に保存されている履歴ログを表示するアクセス権のみが付与されます。なんらかの異常が検出された場合、ダッシュボードの昇格されたアクセスモードによって、実際の Cloud Logging 管理アクティビティ ログを表示する権限がグループに付与されます。各監査期間の終了時に、グループのアクセス権は取り消されます。

データは Sensitive Data Protection を使用して編集した後で、ダッシュボード アプリケーションで表示できるようになります。

次の表に、ダッシュボードで使用されるサービス アカウントに組織管理者が付与できる IAM ロギングロールと、そのロールが付与されるリソースレベルを示します。

ロール リソース プリンシパル 説明
logging.viewer 組織 ダッシュボード サービス アカウント logging.viewer ロールにより、サービス アカウントは Cloud Logging の管理アクティビティ ログの読み取りが許可されます。
bigquery.dataViewer BigQuery データセット ダッシュボード サービス アカウント bigquery.dataViewer ロールにより、ダッシュボード アプリケーションによって使用されるサービス アカウントは、エクスポートされた管理アクティビティ ログの読み取りが許可されます。

このシナリオで組織リソースに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/logging.viewer",
    "members": [
      "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceaccount.com"
    ]
  }]
}

このシナリオで宛先シンクとして構成されている BigQuery データセットに関連付けられている許可ポリシーは、次のようになります。

{
  "bindings": [{
    "role": "roles/bigquery.dataViewer",
    "members": [
      "serviceAccount:prod-project-dashboard@admin-resources.iam.gserviceaccount.com"
    ]
  }]
}