Google Cloud IAM


Cloud Identity and Access Management(Cloud IAM)の基本的なコンセプト

  • メンバー
  • ロール
  • ポリシー
    • リソースに対してどのようなアクセス権(ロール)を誰(メンバー)に許可するのかを定義する場合、ポリシーを作成して、そのポリシーをリソースに接続します。 たとえば、前述の図の Cloud IAM ポリシーでは、[email protected] で識別されるエンドユーザーを App Engine 管理者ロール(roles/appengine.appAdmin)にバインドしています。このポリシーをプロジェクトに適用すると、そのプロジェクトでの App Engine 管理者ロールがユーザー [email protected] に付与されます。このユーザーは、App Engine でプロジェクト レベルのアプリの構成と設定をすべて表示し、作成または更新できます。

ID に関するコンセプト

  • サービス アカウント サービス アカウントは、個々のエンドユーザーではなく、アプリケーションのアカウントです。Google Cloud にホストされているコードを実行すると、そのコードは指定したアカウントとして実行されます。利用するアプリケーションの個別の論理コンポーネントを表すために必要な数だけ、サービス アカウントを作成できます。
  • Google グループを使用すると、ユーザーの集合に対してアクセス ポリシーを簡単に適用できます。
  • G Suite ドメイン
    • ビジネスに対応した Gmail、ドキュメント、ドライブ、カレンダー
    • これまでの Gmail アプリの便利さはそのままに、ビジネス用の管理機能を追加し、広告を非表示にしました。@gmail.com を独自のドメインに置き換えて、[ユーザー名]@example.com や [email protected] のようなビジネス用のメールアドレスを作成しましょう。

アクセス管理に関する概念

  • プロジェクト内のすべての Cloud Storage バケットへのアクセスを許可するには、個々のバケットごとではなく、プロジェクトへのアクセスを許可します。プロジェクト内のすべての Compute Engine インスタンスへのアクセスを許可するには、個々のインスタンスごとではなく、プロジェクトへのアクセスを許可します。

  • 多くの場合、権限は REST API メソッドと 1 対 1 で対応しています。つまり、Google Cloud の各サービスには、各 REST API メソッドに対して関連付けられている権限のセットがあります。そのメソッドの呼び出し元は、そのメソッドを呼び出すための権限を所有している必要があります。たとえば、Pub/Sub を使用し、topics.publish() メソッドを呼び出す必要がある場合は、そのトピックに対して pubsub.topics.publish 権限が必要になります。

  • ロールは権限のコレクションです。ユーザーに直接権限を付与することはできません。代わりに、ロールを付与します。ユーザーにロールを付与すると、そのロールに含まれているすべての権限がユーザーに付与されます。

Cloud IAM ポリシー

Cloud IAM Policy オブジェクトで表現されます。Cloud IAM Policy オブジェクトは、バインディングのリストで構成されます。Binding は、members のリストを role にバインドします。

次のサンプルコードは、Cloud IAM ポリシーの構造を示しています。

{
      "bindings": [
        {
          "role": "roles/storage.objectAdmin",
           "members": [
             "user:[email protected]",
             "serviceAccount:[email protected]",
             "group:[email protected]",
             "domain:google.com"
           ]
        },
        {
          "role": "roles/storage.objectViewer",
          "members": [
            "user:[email protected]"
          ]
        }
      ]
    }

サービス アカウント

サービス アカウントのタイプ

  • ユーザー管理サービス アカウント Cloud Console を使用して新しい Google Cloud プロジェクトを作成するときに、プロジェクトで Compute Engine API が有効になっていると、デフォルトで Compute Engine サービス アカウントが作成されます。これはメールアドレスで識別できます。

[email protected]

  • プロジェクトに App Engine アプリケーションが含まれている場合、デフォルトでは、デフォルト App Engine サービス アカウントがプロジェクト内に作成されます。これはメールアドレスで識別できます。

[email protected]

  • プロジェクト内でサービス アカウントを自分で作成する場合は、サービス アカウントに名前を付けます。次の形式のメールアドレスが割り当てられます。

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Google が管理するサービス アカウント

例として、メールアドレスで識別できる Google API サービス アカウントが挙げられます。

[email protected]