構成でアクセス制御を設定する

Google Cloud Platform 内のリソースへのアクセスを制御するには、Identity and Access Management(IAM)を使用します。IAM では、プロジェクト内のどのリソースに対するどのような種類のアクセスをに許可するかを設定します。IAM の概要については、IAM の概要をご覧ください。

リソースをデプロイするときに、そのリソースに誰がアクセスできるかを制御することもできます。このようにするには、構成で Cloud IAM ポリシーを前もって設定しておきます。たとえば、作成する Pub/Sub トピックを特定のユーザーが管理できるようにしたい場合に、このことを Deployment Manager に伝えるには、構成の中で IAM ポリシーを指定します。デプロイメントを作成または更新するときに、Deployment Manager が Identity and Access Management(IAM)API を呼び出して、そのリソースに対する適切な権限を設定します。

始める前に

IAM のポリシーを Deployment Manager で使用する

IAM ポリシーとは、ユーザーとその役割の集合です。IAM ポリシーの設定はプロジェクト レベルで行い、基本の役割または定義済みの役割を使用します。サービスによっては、Cloud Pub/Sub のように、リソースレベルでの IAM ポリシーの設定もサポートされています。

リソースレベルでの IAM ポリシーの設定がサポートされていないサービスについては、Deployment Manager から NO_METHOD_TO_UPDATE_ACCESS_CONTROL エラーが返されます。

役割の一覧と、それぞれに適用できるリソースについては、役割についてをご覧ください。

Deployment Manager に IAM ポリシーを設定するための権限を付与する

Deployment Manager は Google API サービス アカウントを使用して、他の Google API を呼び出し、Google Cloud Platform リソースを管理します。プロジェクトの Google API サービス アカウントに基本の roles/owner の役割を付与して、構成で定義した IAM ポリシーを適用できるようにする必要があります。

  1. プロジェクトの GCP Console の [IAM] ページに移動します。

    [IAM] ページに移動

  2. プロンプトが表示されたら、リストからプロジェクトを選択します。
  3. 次の形式のメールアドレスが設定された Google API サービス アカウントを見つけます。

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. API のサービス アカウントに roles/owner の役割を付与します。

    Console

    1. Google Cloud Platform Console で、Google API サービス アカウントの [役割] プルダウンを展開し、[プロジェクト] > [オーナー] の順に選択します。
    2. [保存] をクリックして、変更を保存します。

    gcloud

    gcloud コマンドライン ツールで、プロジェクトの Cloud IAM ポリシーにバインディングを追加します。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/owner

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [SERVICE_ACCOUNT_EMAIL] はサービス アカウントのメールです。

    例:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/owner

    API

    API では、以下の URL に対して POST リクエストを作成します。ここで [PROJECT_ID] はプロジェクトの ID を示します。

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    リクエストの本文には、このプロジェクトに適用するバインディングのリストを含めます。roles/owner の役割はバインディングの一部になります。例:

    {
        "policy": {
            "version": "0",
            "bindings": [
                {
                    "role": "roles/owner",
                    "members": [
                        "user:example@gmail.com",
                        "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
                    ]
                }
            ]
        }
    }
    

構成に IAM ポリシーを設定する

次に、以下の指示に沿って、構成またはテンプレートに IAM ポリシーを設定できます。

  1. アクセス制御ポリシーを適用する各リソースの最上位の構成に accessControl セクションを追加します。

  2. リソースに目的の gcpIamPolicy を指定します。IAM ポリシーには、バインディングのリストを含めることができます。バインディングによって、1 つの役割にメンバーのリストが結び付けられます。

たとえば、次の accessControl セクションでは、これらの役割をユーザーに付与するバインディングを追加しています。

ユーザー 役割
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
roles/pubsub.publisher
resources:
- name: a-new-pubsub-topic
  type: pubsub.v1.topic
  properties:
    ...

  accessControl:
    gcpIamPolicy:
      bindings:
      - role: roles/pubsub.editor
        members:
        - "user:alice@example.com"
      - role: roles/pubsub.publisher
        members:
        - "user:jane@example.com"
        - "serviceAccount:my-other-app@appspot.gserviceaccount.com"

IAM ポリシーの詳細については、IAM のドキュメントをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

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

Cloud Deployment Manager のドキュメント