サービス アカウントとキーの最近の使用状況を表示する

このページでは、Activity Analyzer を使用して、Google API の呼び出しにサービス アカウントとキーが最後に使用された日時を確認する方法を説明します。このような使用方法は認証アクティビティと呼ばれます。

最近の認証アクティビティを確認することで、不要になったサービス アカウントとサービス アカウント キーを特定できます。このような未使用のサービス アカウントとキーは、セキュリティ リスクとなるため、無効にするか削除することをおすすめします。

サービス アカウントの使用状況を表示する際は、サービス アカウントにバインドされた API キーで認証されたリクエストは、サービス アカウントの使用状況の指標に記録されないことに注意してください。

Google Cloud以外の Google API を使用した認証アクティビティ(Google Workspace API への権限のドメイン全体の委任など)は、アクティビティ アナライザサービス アカウントの分析情報では追跡されません。これらの認証アクティビティを追跡するには、Cloud Monitoring のサービス アカウントの使用状況の指標を使用します。

サービス アカウントを無効にするか削除する前に、Activity Analyzer の結果と Cloud Monitoring サービス アカウントの使用状況指標を相互参照します。この方法では、 Google Cloudの外部で Google API で使用されているサービス アカウントを削除できません。

始める前に

  • 認証アクティビティについて理解する。
  • Policy Analyzer API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。

    API の有効化

必要なロール

サービス アカウントとサービス アカウント キーの最新の認証アクティビティを一覧表示するために必要な権限を取得するには、プロジェクトに対するアクティビティ分析閲覧者 roles/policyanalyzer.activityAnalysisViewer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、サービス アカウントとサービス アカウント キーの最新の認証アクティビティを一覧表示するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

サービス アカウントとサービス アカウント キーの最新の認証アクティビティを一覧表示するには、次の権限が必要です。

  • policyanalyzer.serviceAccountKeyLastAuthenticationActivities.query
  • policyanalyzer.serviceAccountLastAuthenticationActivities.query

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

すべてのサービス アカウントまたはキーの最近の使用状況を表示する

すべてのサービス アカウントまたはサービス アカウント キーの最新の認証アクティビティの日付を一覧表示するには、Google Cloud CLI または REST API を使用します。

gcloud

サービス アカウントまたはキーの最新の認証アクティビティを一覧表示するには、gcloud policy-intelligence query-activity コマンドを使用します。

gcloud policy-intelligence query-activity --activity-type=ACTIVITY_TYPE \
    --project=PROJECT_ID --limit=LIMIT

次の値を置き換えます。

  • ACTIVITY_TYPE: 一覧表示するアクティビティのタイプ。サービス アカウントの直近の使用状況を一覧表示するには、serviceAccountLastAuthentication を使用します。サービス アカウント キーの最新の使用時間を一覧表示するには、serviceAccountKeyLastAuthentication を使用します。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。 プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • LIMIT: 省略可。返される結果の最大件数です。デフォルト値は 1000 です。

レスポンスでは、次のようにプロジェクトのサービス アカウントの最近の使用時間が一覧表示されます。

---
activity:
  lastAuthenticatedTime: '2021-04-27T07:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '123456789012345678901'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-03-12T07:00:00Z'
---
activity:
  lastAuthenticatedTime: '2021-02-09T08:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '234567890123456789012'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-09-01T07:00:00Z'

こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

REST

サービス アカウントまたはキーの最新の認証アクティビティを一覧表示するには、Policy Analyzer API の activities.query メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • ACTIVITY_TYPE: 一覧表示するアクティビティのタイプ。すべてのサービス アカウントの最新の使用状況を一覧表示するには、serviceAccountLastAuthentication を使用します。すべてのサービス アカウント キーの最新の使用状況を一覧表示するには、serviceAccountKeyLastAuthentication を使用します。
  • PAGE_SIZE: 省略可。このリクエストから返される結果の最大数。指定しなかった場合、サーバーが結果数を決定します。アクティビティの数がページサイズより大きい場合、レスポンスにページ設定トークンが含まれます。このトークンを使用して次のページを取得できます。
  • PAGE_TOKEN: 省略可。以前のレスポンスでこのメソッドから返されたページ設定トークン。指定すると、前のリクエストが終了した時点からアクティビティのリストが開始します。

HTTP メソッドと URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/ACTIVITY_TYPE/activities:query?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスでは、次のようにプロジェクトのサービス アカウントの最近の使用時間が一覧表示されます。

{
  "activities": [
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-28T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "123456789012345678901"
        }
      }
    },
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-29T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-2@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "234567890123456789012"
        }
      }
    }
  ],
  "nextPageToken": "AVgRrQV4b5nISN6cGJvTPFJ2v_"
}

こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

特定のサービス アカウントの最近の使用状況を表示する

特定のサービス アカウントが最後に使用された日付を確認するには、Google Cloud コンソール、gcloud CLI、または REST API を使用します。

コンソール

  1. Google Cloud コンソールで、[Policy Analyzer] ページに移動します。

    Policy Analyzer に移動

  2. [最近のアクティビティの分析] で、[このサービス アカウントが最後に使用された日時] というペインを見つけて、そのペインで [クエリを作成] をクリックします。

  3. [クエリのスコープの選択] ボックスに、サービス アカウントを分析するプロジェクトの名前を入力します。

  4. [サービス アカウントを追加] セクションで、[サービス アカウント] ボックスをクリックします。プロジェクト内のすべてのサービス アカウントの一覧が表示されます。このリストには、各サービス アカウントが関連付けられているプロジェクトと、各サービス アカウントのメールアドレスも含まれています。

  5. 最近の使用状況を表示するサービス アカウントを選択します。

  6. 省略可: 複数のサービス アカウントの最近の使用状況を表示するには、[アカウントを追加] をクリックして別のサービス アカウントを選択します。一度に最大 10 個のサービス アカウントを分析できます。

  7. [アクセスのアクティビティに関するクエリ] パネルで [クエリを実行] をクリックします。

結果ページには、サービス アカウントの最新の使用状況が表示されます。こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

gcloud

特定のサービス アカウントの最新の認証アクティビティを取得するには、フィルタを指定して gcloud policy-intelligence query-activity コマンドを使用します。

gcloud policy-intelligence query-activity --activity-type=serviceAccountLastAuthentication \
    --project=PROJECT_ID \
    --query-filter='FILTER'

次の値を置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。 プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • FILTER: 使用状況を表示するサービス アカウントの完全なリソース名を指定するフィルタ。サービス アカウントの完全なリソース名には、プロジェクト ID とサービス アカウントのメールアドレスが含まれます。

    1 つのサービス アカウントをフィルタするには、次の形式のフィルタを使用します。

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL"

    複数のサービス アカウントをフィルタリングするには、OR を使用して、許容される複数の完全なリソース名を指定します。

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_1_EMAIL" OR activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_2_EMAIL"

    最大 10 個のサービス アカウントをフィルタできます。

レスポンスで、サービス アカウントの最新の使用状況が返されます。

---
activity:
  lastAuthenticatedTime: '2021-04-27T07:00:00Z'
  serviceAccount:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
    projectNumber: '123456789012'
    serviceAccountId: '123456789012345678901'
activityType: serviceAccountLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-03-12T07:00:00Z'

こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

REST

特定のサービス アカウントの最新の認証アクティビティを取得するには、Policy Analyzer API の activities.query メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • FILTER: 使用状況を表示するサービス アカウントの完全なリソース名を指定するフィルタ。

    1 つのサービス アカウントをフィルタするには、次の形式のフィルタを使用します。

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_EMAIL%22

    複数のサービス アカウントをフィルタリングするには、%20OR%20 を使用して、許容される複数の完全なリソース名を指定します。

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_1_EMAIL%22%20OR%20activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_2_EMAIL%22

HTTP メソッドと URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/serviceAccountLastAuthentication/activities:query?filter=FILTER

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスで、サービス アカウントの最新の使用状況が返されます。

{
  "activities": [
    {
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
      "activityType": "serviceAccountLastAuthentication",
      "observationPeriod": {
        "startTime": "2020-04-20T07:00:00Z",
        "endTime": "2021-05-17T07:00:00Z"
      },
      "activity": {
        "lastAuthenticatedTime": "2021-04-28T07:00:00Z",
        "serviceAccount": {
          "projectNumber": "123456789012",
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com",
          "serviceAccountId": "123456789012345678901"
        }
      }
    }
  ]
}

特定のサービス アカウント キーの最近の使用状況を表示する

特定のサービス アカウント キーが最後に使用された日付を確認するには、最近の使用状況を表示するサービス アカウント キーを見つけて、該当する ID を使用してクエリを作成します。

JSON キーファイルがある場合は、ファイルの private_key_id フィールドでサービス アカウント キーの一意の ID を確認できます。

JSON キーファイルがない場合は、次の手順でサービス アカウント キーの一意の ID を確認します。

コンソール

  1. Google Cloud コンソールで、[Policy Analyzer] ページに移動します。

    Policy Analyzer に移動

  2. [最近のアクティビティの分析] で、[このサービス アカウント キーが最後に使用された日時] というペインを見つけて、そのペインで [クエリを作成] をクリックします。

  3. [クエリのスコープの選択] ボックスに、サービス アカウント キーを分析するプロジェクトの名前を入力します。

  4. [サービス アカウント キーを追加] セクションで、[サービス アカウント キー] ボックスをクリックします。プロジェクト内のすべてのサービス アカウント キーの一覧が表示されます。このリストには、各キーが関連付けられているプロジェクトとサービス アカウントも含まれます。

  5. 最近の使用状況を表示するキーを選択します。

  6. 省略可: 複数のキーの最近の使用状況を表示するには、[キーを追加] をクリックして別の鍵を選択します。一度に最大 10 個のキーを分析できます。

  7. [アクセスのアクティビティに関するクエリ] パネルで [クエリを実行] をクリックします。

結果ページには、サービス アカウント キーの最新の使用状況が表示されます。こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

gcloud

まず、最新の使用状況を表示するサービス アカウント キーを特定します。

  1. サービス アカウント キーの一覧を表示します。

    後述のコマンドデータを使用する前に、次のように置き換えます。

    • SERVICE_ACCOUNT_EMAIL: キーが関連付けられているサービス アカウントのメールアドレス。

    gcloud iam service-accounts keys list コマンドを実行します。

    Linux、macOS、Cloud Shell

    gcloud iam service-accounts keys list --iam-account=SERVICE_ACCOUNT_EMAIL

    Windows(PowerShell)

    gcloud iam service-accounts keys list --iam-account=SERVICE_ACCOUNT_EMAIL

    Windows(cmd.exe)

    gcloud iam service-accounts keys list --iam-account=SERVICE_ACCOUNT_EMAIL

    出力には、サービス アカウントに関連付けられているユーザー作成のキーのリストと、各キーの一意の ID、作成日時、有効期限が表示されます。

  2. 出力に含まれるデータを使用して、追跡するキーを特定し、一意の ID をコピーします。

サービス アカウント キーの一意の ID を確認した後、その ID を使用して Activity Analyzer の結果をフィルタします。

特定のサービス アカウント キーの最新の認証アクティビティを取得するには、フィルタを指定して gcloud policy-intelligence query-activity コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • FILTER: 使用状況を表示するサービス アカウント キーの完全なリソース名を指定するフィルタ。サービス アカウント キーの完全なリソース名には、プロジェクト ID、キーに関連付けられたサービス アカウントのメールアドレス、キー ID が含まれます。

    1 つのサービス アカウント キーをフィルタするには、次の形式のフィルタを使用します。

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"

    複数のサービス アカウント キーをフィルタするには、OR を使用して、許容される複数の完全なリソース名を指定します。

    activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_1_EMAIL/keys/KEY_ID_1" OR activities.full_resource_name="//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_2_EMAIL/keys/KEY_ID_2"

    最大 10 個のサービス アカウント キーをフィルタできます。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication \
    --project=PROJECT_ID \
    --query-filter='FILTER'

Windows(PowerShell)

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication `
    --project=PROJECT_ID `
    --query-filter='FILTER'

Windows(cmd.exe)

gcloud policy-intelligence query-activity --activity-type=serviceAccountKeyLastAuthentication ^
    --project=PROJECT_ID ^
    --query-filter='FILTER'

次のようなレスポンスが返されます。

activity:
  lastAuthenticatedTime: '2021-06-11T07:00:00Z'
  serviceAccountKey:
    fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c
    projectNumber: '232342569935'
    serviceAccountId: '103185812403937829397'
activityType: serviceAccountKeyLastAuthentication
fullResourceName: //iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c
observationPeriod:
  endTime: '2021-07-06T07:00:00Z'
  startTime: '2020-09-10T07:00:00Z'

このレスポンスで、サービス アカウント キーの最新の使用状況が返されます。こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

REST

まず、最新の使用状況を表示するサービス アカウント キーを特定します。

  1. サービス アカウント キーの一覧を表示します。

    サービス アカウントのすべてのサービス アカウント キーを一覧表示するには、IAM API の projects.serviceAccounts.keys.list メソッドを使用します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
    • SA_NAME: キーを一覧表示するサービス アカウントの名前。
    • KEY_TYPES: 省略可。レスポンスに含めるキータイプのカンマ区切りのリスト。キータイプは、キーがユーザー管理(USER_MANAGED)かシステム管理(SYSTEM_MANAGED)かを示します。空白のままにすると、すべてのキーが返されます。

    HTTP メソッドと URL:

    GET https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys?keyTypes=KEY_TYPES

    リクエストを送信するには、次のいずれかのオプションを展開します。

    レスポンスで、サービス アカウント キーの最新の使用状況が返されます。

    {
      "keys": [
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/90c48f61c65cd56224a12ab18e6ee9ca9c3aee7c",
          "validAfterTime": "2020-03-04T17:39:47Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/e5e3800831ac1adc8a5849da7d827b4724b1fce8",
          "validAfterTime": "2020-03-31T23:50:09Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED"
        },
        {
          "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/b97699f042b8eee6a846f4f96259fbcd13e2682e",
          "validAfterTime": "2020-05-17T18:58:13Z",
          "validBeforeTime": "9999-12-31T23:59:59Z",
          "keyAlgorithm": "KEY_ALG_RSA_2048",
          "keyOrigin": "GOOGLE_PROVIDED",
          "keyType": "USER_MANAGED",
          "disabled": true
        }
      ]
    }
    

  2. レスポンスのメタデータを使用して、追跡するキーを特定します。次に、[name] フィールドの末尾にあるキーの一意の ID をコピーします。

    name フィールドの形式は次のとおりです。

    "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID"

    keys/ より後のすべての部分がキーの一意の ID になります。

    たとえば、次のキー名の一意の ID は 0f561cc41650ff521899de2fd653bd3de08e2da4 です。

    "name": "projects/my-project/serviceAccounts/my-account@my-project.iam.gserviceaccount.com/keys/0f561cc41650ff521899de2fd653bd3de08e2da4"

サービス アカウント キーの一意の ID を確認した後、その ID を使用して Activity Analyzer の結果をフィルタします。

特定のサービス アカウント キーの最新の認証アクティビティを取得するには、Policy Analyzer API の activities.query メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。
  • FILTER: 使用状況を表示するサービス アカウント キーの完全なリソース名を指定するフィルタ。サービス アカウント キーの完全なリソース名には、プロジェクト ID、キーに関連付けられたサービス アカウントのメールアドレス、キー ID が含まれます。

    1 つのサービス アカウント キーをフィルタするには、次の形式のフィルタを使用します。

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_EMAIL%2Fkeys%2FKEY_ID%22

    複数のサービス アカウント キーをフィルタするには、%20OR%20 を使用して、許容される複数の完全なリソース名を指定します。

    activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_1_EMAIL%2Fkeys%2FKEY_ID_1%22%20OR%20activities.full_resource_name%3D%22%2F%2Fiam.googleapis.com%2Fprojects%2FPROJECT_ID%2FserviceAccounts%2FSERVICE_ACCOUNT_2_EMAIL%2Fkeys%2FKEY_ID_2%22

    最大 10 個のサービス アカウント キーをフィルタできます。

HTTP メソッドと URL:

GET https://policyanalyzer.googleapis.com/v1/projects/PROJECT_ID/locations/global/activityTypes/serviceAccountKeyLastAuthentication/activities:query?filter=FILTER

リクエストを送信するには、次のいずれかのオプションを展開します。

レスポンスで、サービス アカウント キーの最新の使用状況が返されます。

{
  "activities": [
    {
      "activity": {
        "lastAuthenticatedTime": "2021-06-11T07:00:00Z",
        "serviceAccountKey": {
          "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c",
          "projectNumber": "123456789012",
          "serviceAccountId": "123456789012345678901"
        }
      },
      "activityType": "serviceAccountKeyLastAuthentication",
      "fullResourceName": "//iam.googleapis.com/projects/my-project/serviceAccounts/service-account-1t@my-project.iam.gserviceaccount.com/keys/1c65fca351d6925e629059743428b7af243a728c",
      "observationPeriod": {
        "endTime": "2021-07-06T07:00:00Z",
        "startTime": "2020-04-20T07:00:00Z"
      }
    }
  ]
}

こうした結果を理解する方法については、このページのアクティビティを理解するをご覧ください。

アクティビティを理解する

Console

クエリ結果ページには、クエリ パラメータとクエリの結果が一覧表示されます。

サービス アカウント クエリの場合、結果テーブルには、クエリの各サービス アカウントと最後に認証された日時が表示されます。

サービス アカウント キー クエリの場合、結果テーブルには、クエリの各サービス アカウント キー、関連するサービス アカウント、および最後に認証された日時が表示されます。

結果に、直近の認証イベントが含まれない場合があります。ツールチップを確認して、分析に使用された正確な期間を確認します。この期間外で発生した認証イベントは、結果には含まれません。

両方のクエリの結果テーブルには、サービス アカウントがプロジェクトに持つ IAM ロールと、セキュリティ分析情報も一覧表示されます。これらの分析情報には、リソースに対するサービス アカウントのアクセス パターンが示されます。たとえば、一部の分析情報では、過剰な権限、すなわちプリンシパルが必要としない権限がハイライト表示されます。他の分析情報では、ラテラル ムーブメントの権限があるサービス アカウント、またはサービス アカウントが別のプロジェクトのサービス アカウントに成り代わる権限を強調します。

一部の分析情報には、過剰な権限を削減するための変更を提案するロールの推奨事項も記載されています。推奨事項と分析情報を管理する方法については、推奨事項を確認して適用するをご覧ください。

gcloud

Activity Analyzer は、結果をアクティビティのリストとして報告します。アクティビティには次のフィールドがあります。

  • fullResourceName: アクティビティが報告されているサービス アカウントまたはサービス アカウント キーの完全なリソース名。この形式については、以降のセクションと完全なリソース名で説明します。
  • activityType: 報告されているアクティビティのタイプ。最近のサービス アカウントの認証アクティビティの場合、値は serviceAccountLastAuthentication になります。最近のサービス アカウント キーの認証アクティビティの場合、値は serviceAccountKeyLastAuthentication になります。
  • observationPeriod: サービス アカウントまたはキーのモニタリング対象期間の開始時間と終了時間。これらのタイムスタンプの時間は常に T07:00:00Z です。
  • activity: アクティビティの詳細。このフィールドの内容はアクティビティのタイプによって異なります。詳しくは、以降のセクションをご覧ください。

サービス アカウント アクティビティの詳細

serviceAccountLastAuthentication アクティビティの activity フィールドには、以下のフィールドがあります。

  • serviceAccount: アクティビティが報告されているサービス アカウントの詳細。以下のものが含まれます。

    • fullResourceName: サービス アカウントの完全なリソース名。形式は //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL です。
    • projectNumber: サービス アカウントを所有するプロジェクトの ID。
    • serviceAccountId: サービス アカウントの数値 ID。
  • lastAuthenticatedTime: 最新の認証イベントが発生した日付を表すタイムスタンプ。認証イベントの正確な時刻に関係なく、このタイムスタンプの時刻は常に T07:00:00Z です。

    結果に、直近の認証イベントが含まれない場合があります。observationPeriod を確認して、分析に使用された正確な期間を確認します。この期間外で発生した認証イベントは、結果には含まれません。

    以前に使用されたことのないサービス アカウントの場合、このフィールドは含まれません。

サービス アカウント キーのアクティビティの詳細

serviceAccountKeyLastAuthentication アクティビティの activity フィールドには、以下のフィールドがあります。

  • serviceAccountKey: アクティビティが報告されているサービス アカウント キーの詳細。以下のものが含まれます。

    • fullResourceName: サービス アカウント キーの完全なリソース名。形式は //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID です。
    • projectNumber: キーが関連付けられているサービス アカウントを所有するプロジェクトの数値 ID。
    • serviceAccountId: キーが関連付けられているサービス アカウントの数値 ID。
  • lastAuthenticatedTime: 最新の認証イベントが発生した日付を表すタイムスタンプ。認証イベントの正確な時刻に関係なく、このタイムスタンプの時刻は常に T07:00:00Z です。

    結果に、直近の認証イベントが含まれない場合があります。observationPeriod を確認して、分析に使用された正確な期間を確認します。この期間外で発生した認証イベントは、結果には含まれません。

    使用されたことのないサービス アカウント キーの場合、このフィールドは含まれません。

REST

Activity Analyzer は、結果をアクティビティのリストとして報告します。アクティビティには次のフィールドがあります。

  • fullResourceName: アクティビティが報告されているサービス アカウントまたはサービス アカウント キーの完全なリソース名。この形式については、以降のセクションと完全なリソース名で説明します。
  • activityType: 報告されているアクティビティのタイプ。最近のサービス アカウントの認証アクティビティの場合、値は serviceAccountLastAuthentication になります。最近のサービス アカウント キーの認証アクティビティの場合、値は serviceAccountKeyLastAuthentication になります。
  • observationPeriod: サービス アカウントまたはキーのモニタリング対象期間の開始時間と終了時間。これらのタイムスタンプの時間は常に T07:00:00Z です。
  • activity: アクティビティの詳細。このフィールドの内容はアクティビティのタイプによって異なります。詳しくは、以降のセクションをご覧ください。

サービス アカウント アクティビティの詳細

serviceAccountLastAuthentication アクティビティの activity フィールドには、以下のフィールドがあります。

  • serviceAccount: アクティビティが報告されているサービス アカウントの詳細。以下のものが含まれます。

    • fullResourceName: サービス アカウントの完全なリソース名。形式は //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL です。
    • projectNumber: サービス アカウントを所有するプロジェクトの ID。
    • serviceAccountId: サービス アカウントの数値 ID。
  • lastAuthenticatedTime: 最新の認証イベントが発生した日付を表すタイムスタンプ。認証イベントの正確な時刻に関係なく、このタイムスタンプの時刻は常に T07:00:00Z です。

    結果に、直近の認証イベントが含まれない場合があります。observationPeriod を確認して、分析に使用された正確な期間を確認します。この期間外で発生した認証イベントは、結果には含まれません。

    以前に使用されたことのないサービス アカウントの場合、このフィールドは含まれません。

サービス アカウント キーのアクティビティの詳細

serviceAccountKeyLastAuthentication アクティビティの activity フィールドには、以下のフィールドがあります。

  • serviceAccountKey: アクティビティが報告されているサービス アカウント キーの詳細。以下のものが含まれます。

    • fullResourceName: サービス アカウント キーの完全なリソース名。形式は //iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID です。
    • projectNumber: キーが関連付けられているサービス アカウントを所有するプロジェクトの数値 ID。
    • serviceAccountId: キーが関連付けられているサービス アカウントの数値 ID。
  • lastAuthenticatedTime: 最新の認証イベントが発生した日付を表すタイムスタンプ。認証イベントの正確な時刻に関係なく、このタイムスタンプの時刻は常に T07:00:00Z です。

    結果に、直近の認証イベントが含まれない場合があります。observationPeriod を確認して、分析に使用された正確な期間を確認します。この期間外で発生した認証イベントは、結果には含まれません。

    使用されたことのないサービス アカウント キーの場合、このフィールドは含まれません。

次のステップ