API へのアクセス権の付与と取り消し

誰が API にアクセスできるかを制御することは、開発の重要な部分です。たとえば API をテストする際に、適切な権限を持つサービス アカウントを使って更新後の Cloud Endpoints 構成の再デプロイを自動化できます。デフォルトでは、プロジェクト オーナーだけが API へのアクセスを管理できます。このページでは、Cloud Console または gcloud コマンドライン ツールを使用して API へのアクセス権の付与や取り消しを行う方法について説明します。

Endpoints では、Identity and Access Management のロールを使用して、API レベルでアクセス権の付与や取り消しを行います。アクセス権の付与と取り消しは、ユーザー、サービス アカウント、Google グループに対して行うことができます。

Google グループを使用すると、ユーザーの集合に対して簡単にアクセス権を付与したり、取り消したりできます。個々のユーザーまたはサービス アカウントに対してアクセス権の付与または取り消しを 1 つずつ行う代わりに、グループ全体に対して一度にアクセス権の付与または取り消しを行えます。また、メンバーごとに IAM のロールの付与または取り消しを行う代わりに、Google Group に対して簡単にメンバーを追加および削除できます。

アクセス権の付与

Cloud Console

  1. Cloud Console で、プロジェクトの [エンドポイント] の [サービス] ページに移動します。

    [エンドポイント] の [サービス] ページに移動

  2. API が複数ある場合は、API の名前をクリックします。
  3. [権限] サイドパネルが開いていない場合は、[ 権限] をクリックします。
  4. [メンバーを追加] ボックスに、ユーザー、サービス アカウント、または Google グループのメールアドレスを入力します。
  5. [ロールを選択] プルダウンで、[サービス管理] をクリックし、以下のいずれかのロールを選択します。
    • サービス ユーザー: このロールには、プロジェクト メンバー以外のユーザーが、自分のプロジェクトで API を表示し、有効化できる権限が含まれています。API 用のポータルを作成済みの場合、このロールを持つ API ユーザーはそのポータルにアクセスできます。
    • サービス コントローラ: このロールには、実行時に Service Infrastructure API の check メソッドと report メソッドを呼び出す権限が含まれています。
    • Service Config 編集者: このロールには、Service Management が Endpoints 構成を既存のサービスにデプロイするために必要な最小限の権限が含まれています。
    • Service Management 管理者: このロールには、Service Config 編集者、サービス ユーザー、サービス コントローラの各ロールに含まれる権限が含まれています。また、gcloudリソースへのアクセス権の付与、変更、取り消しで説明されている手法で API へのアクセス権を付与するために必要な権限も含まれています。

    このロールについては、Service Management API のアクセス制御をご覧ください。Cloud Console で他のロールを選択することもできますが、それらのロールは API の管理には役立ちません。

  6. [追加] をクリックして、指定した IAM ロールにメンバーを追加します。
  7. 必要に応じて、メンバーの追加とロールの選択を繰り返します。
  8. Service Management のロールを持つユーザーは、Cloud Console で [エンドポイント] の [サービス] ページにアクセスできません。ユーザーが [エンドポイント] の [サービス] ページにアクセスできるようにするには、プロジェクトに対するプロジェクト閲覧者以上のロールをユーザーに付与する必要があります。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。

gcloud

  1. Cloud Shell を開きます。あるいは、Cloud SDK がインストール済みの場合はターミナル ウィンドウを開きます。
  2. 該当する gcloud コマンドを入力します。
    • ユーザーにアクセス権を付与する場合は、次のコマンドを実行します。
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='user:[EMAIL-ADDRESS]' \
        --role='[ROLE]'

      ロールについては、以下のいずれかの IAM ロールを指定します。

      • roles/servicemanagement.configEditor: このロールには、Endpoints 構成を既存のサービスにデプロイするために Service Management で必要な最小限の権限が含まれています。
      • roles/servicemanagement.admin: このロールには、roles/servicemanagement.configEditorroles/servicemanagement.serviceConsumerroles/servicemanagement.serviceController の各ロールに含まれる権限が含まれています。また、gcloudリソースへのアクセス権の付与、変更、取り消しで説明されている手法で API へのアクセス権を付与するために必要な権限も含まれています。

      例:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='user:example-user@gmail.com' \
        --role='roles/servicemanagement.admin'

    • サービス アカウントにアクセス権を付与する場合は、次のコマンドを実行します。
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='serviceAccount:[EMAIL-ADDRESS]' \
        --role='[ROLE]'

      例:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='serviceAccount:example-service-account@example-project.iam.gserviceaccount.com' \
        --role='roles/servicemanagement.configEditor'

    • Google グループにアクセス権を付与する場合は、次のコマンドを実行します。
      gcloud endpoints services add-iam-policy-binding [SERVICE-NAME] \
        --member='group:[GROUP-NAME]@googlegroups.com' \
        --role='[ROLE]'

      例:

      gcloud endpoints services add-iam-policy-binding example-service-name \
        --member='group:example-group@googlegroups.com' \
        --role='roles/servicemanagement.configEditor'

  3. Service Management のロールを持つユーザーは、Cloud Console で [エンドポイント] の [サービス] ページにアクセスできません。ユーザーが [エンドポイント] の [サービス] ページにアクセスできるようにするには、プロジェクトに対するプロジェクト閲覧者以上のロールをユーザーに付与する必要があります。詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。

アクセス権を取り消す

API へのアクセス権を取り消すには、IAM ロールを持っているメンバーから、そのロールを削除します。

Cloud Console

  1. Cloud Console で、プロジェクトの [エンドポイント] の [サービス] ページに移動します。

    [エンドポイント] の [サービス] ページに移動

  2. API が複数ある場合は、API の名前をクリックします。
  3. [権限] サイドパネルが開いていない場合は、[ 権限] をクリックします。
  4. アクセス権を取り消すメンバーを見つけます。該当する [ロール] カードをクリックしてメンバーのリストを表示するか、[メンバー検索] ボックスに名前またはロールを入力します。
  5. [削除] をクリックします。
  6. Google Cloud プロジェクトへのユーザー アクセス権も一緒に取り消す場合、詳しくはリソースへのアクセス権の付与、変更、取り消しをご覧ください。

gcloud

  1. Cloud Shell を開きます。あるいは、Cloud SDK をインストール済みの場合はターミナル ウィンドウを開きます。
  2. 該当する gcloud コマンドを入力します。
    • ユーザーのアクセス権を取り消す場合は、次のコマンドを実行します。
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
        --member='user:[EMAIL-ADDRESS]' \
        --role='[ROLE-NAME]'

      例:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
        --member='user:example-user@gmail.com' \
        --role='roles/editor'
    • サービス アカウントのアクセス権を取り消す場合は、次のコマンドを実行します。
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
        --member='serviceAccount:[EMAIL-ADDRESS]' \
        --role='[ROLE-NAME]'

      例:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
        --member='serviceAccount:example-service-account@example-project.iam.gserviceaccount.com' \
        --role='roles/servicemanagement.configEditor'
    • Google グループのアクセス権を取り消す場合は、次のコマンドを実行します。
      gcloud endpoints services remove-iam-policy-binding [SERVICE-NAME] \
            --member='group:[GROUP-NAME]@googlegroups.com' \
            --role='[ROLE-NAME]'

      例:

      gcloud endpoints services remove-iam-policy-binding example-service-name \
            --member='group:example-group@googlegroups.com' \
            --role='roles/viewer'
  3. Google Cloud プロジェクトへのユーザー アクセス権も一緒に取り消す場合、詳しくはリソースへのアクセス権の付与、変更、取り消しをご覧ください。

次のステップ

以下の内容について学習します。