サービス アカウントの作成と管理

このページでは、Google Cloud Identity and Access Management API、Google Cloud Platform Console、gcloud コマンドライン ツールを使用してサービス アカウントを作成し、管理する方法について説明します。

新しい Cloud プロジェクトを作成すると、Google Cloud Platform により自動的に Compute Engine サービス アカウントと App Engine サービス アカウントが 1 つずつそのプロジェクトに作成されます。プロジェクトには最大 98 個のサービス アカウントを作成し、リソースへのアクセスを制御することができます。

始める前に

サービス アカウントを作成する

サービス アカウントの作成は、プロジェクトにメンバーを追加する手順と同様ですが、サービス アカウントは個々のエンドユーザーではなくアプリケーションに属します。

API

以下に示すコードの例では、serviceAccounts.create() メソッドを使用してプロジェクト my-project-123my service account という名前の新しいサービス アカウントを作成します。

API で、次に対する POST リクエストを作成します。

https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts

リクエストの本文には、新しいサービス アカウントの作成に必要なプロパティとして、そのサービス アカウントの ID と表示名を指定する必要があります。ID は、サービス アカウントのメールアドレスを作成するのに使用されます。サービス アカウントの表示名は後で変更できますが、サービス アカウントの作成後にサービス アカウント ID を変更することはできません。

{
    "accountId": "my-sa-123",
    "serviceAccount": {
        "displayName": "my service account",
    }
}

レスポンス:

{
    "name": "projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com",
    "projectId": "my-project-123",
    "uniqueId": "113948692397867021414",
    "email": "my-sa-123@my-project-123.iam.gserviceaccount.com",
    "displayName": "my service account",
    "etag": "BwUp3rVlzes=",
    "oauth2ClientId": "117249000288840666939"
}

Console

  1. Cloud Platform Console で [サービス アカウント] ページを開きます。

    [サービス アカウント] ページを開く

  2. [プロジェクトを選択] をクリックします。

  3. プロジェクトを選択し、[開く] をクリックします。
  4. [サービス アカウントを作成] をクリックします。
  5. サービス アカウント名を入力し、そのサービス アカウントに付与する役割を選択して、[作成] をクリックします。

gcloud

サービス アカウントを作成するには、次のコマンドを実行します。

gcloud iam service-accounts create my-sa-123 --display-name "my service account"

コマンドの出力にはサービス アカウントが表示されます。これはたとえば以下のようになります。

displayName: my service account
email: my-sa-123@my-project-123.iam.gserviceaccount.com
etag: BwUqQpHDCw8=
name: projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com
oauth2ClientId: '112984177383228986143'
projectId: my-project-123
uniqueId: '112984177383228986143'

サービス アカウントを作成したら、そのサービス アカウントに 1 つ以上の役割を付与し、自分を代行できるようにします。

サービス アカウントの一覧取得

サービス アカウントの一覧を取得する際、パラメータを指定してレスポンスに含まれるサービス アカウントの数を制限することができます。残りのサービス アカウントの一覧を取得するには、次のリクエストで ListServiceAccountsResponse.next_page_token を使用します。

このメソッドを使用して、サービス アカウントとキーの監査や、サービス アカウントの管理に使用するカスタムツールのビルドを行います。

API

以下のコードにより、my-project-123 のすべてのサービス アカウントがリスト表示されます。

リクエスト:

GET https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts

レスポンス:

{
    "accounts": [
    {
        "name": "projects/my-project-123/serviceAccounts/sa-1@my-project-123.iam.gserviceaccount.com",
        "projectId": "my-project-123",
        "uniqueId": "108979773878059201436",
        "email": "sa-1@my-project-123.iam.gserviceaccount.com",
        "displayName": "service account 1",
        "etag": "BwUpTsLVUkQ=",
        "oauth2ClientId": "102240834887833340852"
    },
    {
        "name": "projects/my-project-123/serviceAccounts/835469197146-compute@developer.gserviceaccount.com",
        "projectId": "my-project-123",
        "uniqueId": "117077288574069305058",
        "email": "835469197146-compute@developer.gserviceaccount.com",
        "displayName": "Compute Engine Default Service Account",
        "etag": "BwUomgwvClk=",
        "oauth2ClientId": "101236303957024449895"
    },
    {
        "name": "projects/my-project-123/serviceAccounts/sa-2@my-project-123.iam.gserviceaccount.com",
        "projectId": "my-project-123",
        "uniqueId": "109687856497850065438",
        "email": "sa-2@my-project-123.iam.gserviceaccount.com",
        "displayName": "service account 2",
        "etag": "BwUqKUzcGRM=",
        "oauth2ClientId": "105236325228757713905"
    },

    . . .

    ]
}

Console

  1. Cloud Platform Console で [サービス アカウント] ページを開きます。

    [サービス アカウント] ページを開く

  2. [プロジェクトを選択] をクリックします。

  3. プロジェクトを選択し、[開く] をクリックします。[サービス アカウント] のページにすべてのサービス アカウントが一覧表示されます。

gcloud

サービス アカウントの一覧を取得するには、次のコマンドを実行します。

gcloud iam service-accounts list

コマンドの出力にはすべてのサービス アカウントのリストが表示されます。これはたとえば以下のようになります。

NAME                                    EMAIL
my service account 1                    my-sa-1@my-project-123.iam.gserviceaccount.com
my service account 2                    my-sa-2@my-project-123.iam.gserviceaccount.com
. . .

サービス アカウントの名前変更

サービス アカウントの表示名は通常、サービス アカウントの目的や担当者など、そのサービス アカウントに関する追加情報を取得するのに使用されます。

API

既存のサービス アカウントの表示名は、serviceAccounts.update() メソッドを使用して変更します。

リクエスト:

PUT https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com

リクエストの本文には、新しい表示名、プロジェクト ID、サービス アカウントの一意の ID、サービス アカウントのメールアドレスを含める必要があります。

{
    "displayName":"my service account",
    "etag":"BwUpVKjgNtE=",
    "projectId":"my-project-123",
    "uniqueId":"107522985251862639552",
    "email":"my-sa-123@my-project-123.iam.gserviceaccount.com",
}

レスポンス:

{
    "name": "projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com",
    "projectId": "my-project-123",
    "uniqueId": "107522985251862639552",
    "email": "my-sa-123@my-project-123.iam.gserviceaccount.com",
    "displayName": "my service account",
    "etag": "BwUqLK4bL9U=",
    "oauth2ClientId": "105236325228757713905"
}

Console

  1. Cloud Platform Console で [サービス アカウント] ページを開きます。

    [サービス アカウント] ページを開く

  2. [プロジェクトを選択] をクリックします。
  3. プロジェクトを選択し、[開く] をクリックします。
  4. 名前を変更するサービス アカウントを見つけ、その行の丸が縦に並んだボタンをクリックして、[編集] をクリックします。
  5. 新しい名前を入力して [保存] をクリックします。

gcloud

サービス アカウントの名前を変更するには:

gcloud iam service-accounts update \
    my-sa-123@my-project-123.iam.gserviceaccount.com \
    --display-name "updated service account"

コマンドの出力には名前を変更したサービス アカウントが表示されます。これはたとえば以下のようになります。

displayName: updated service account
email: my-sa-123@my-project-123.iam.gserviceaccount.com
etag: BwUqQpHDCw8=
name: projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com
oauth2ClientId: '112984177383228986143'
projectId: my-project-123
uniqueId: '112984177383228986143'

サービス アカウントの削除

サービス アカウントを削除すると、アプリケーションはそのサービス アカウントを使用して Google Cloud Platform リソースにアクセスすることができなくなります。デフォルトの App Engine と Compute Engine のサービス アカウントを削除すると、インスタンスはプロジェクトのリソースにアクセスできなくなります。そのため、削除は注意して行う必要があります。サービス アカウントを削除する前に、重要なアプリケーションがそのサービス アカウントを使用していないことを確認してください。

API

既存のサービス アカウントは serviceAccounts.delete() メソッドを使用して削除できます。

以下のリクエストは、my-project-123 プロジェクトの my-sa-123 サービス アカウントを削除します。

DELETE https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com

Console

  1. Cloud Platform Console で [サービス アカウント] ページを開きます。

    [サービス アカウント] ページを開く

  2. [プロジェクトを選択] をクリックします。

  3. プロジェクトを選択し、[開く] をクリックします。
  4. 削除するサービス アカウントを選択して、[削除] をクリックします。

gcloud

サービス アカウントを削除するには次のコマンドを実行します。

gcloud iam service-accounts delete \
    my-sa-123@my-project-123.iam.gserviceaccount.com

コマンドの出力には次のようなメッセージが表示されます。

deleted service account [my-sa-123@my-project-123.iam.gserviceaccount.com]

次のステップ

外出先でもリソースをモニタリング

Google Cloud Console アプリを入手して、プロジェクトの管理にお役立てください。

フィードバックを送信...

Cloud Identity and Access Management のドキュメント