GCPのIAM

GCPのIAM(Cloud Identity and Access Management)について概要をざっくりとまとめます。

GPCのIAMでは誰が(ID)がどのリソースに対してどのようなアクセス権を持つかを定義することができます。
誰がの部分はメンバー、アクセス権をまとめたものはロール、どのメンバーにどのロールを付与するかを定義したものをポリシーと呼びます。
リソースとはGCE、GCSなどGCPの各サービスのことでIAMの部分ではポリシーがリソースに結びつきます。認証されたメンバーがリソースにアクセスするとIAMはリソースのポリシーをチェックし、メンバーとロールの定義を確認し操作が許可されているかを確認します。

メンバー

- Googleアカウント:Googleアカウントに関連付けられているメールアドレスなどです。
- サービスアカウント:個々のユーザではなく、アプリケーションのためのアカウントになります。GECなどでコードを実行すると、このコードが指定したアカウントとして実行されます。
- allAuthenticatedUsers:すべてのサービスアカウント、Googleアカウントで認証されたユーザすべてを表す特殊な識別子。
他にもGoogle Workspace、Cloud Identityドメイン、allUsersなどがあります。

ロール

メンバーに付与をすることでメンバーのリソースへのアクセスの制御を行います。
- 基本ロール:GCPで元から定義されているロールになりオーナー、編集者、閲覧者の三種類があります。
- 事前定義ロール:基本ロールと同じくGCPで元から定義されており各リソースごとにより詳細な制御が可能なロールになります。
- カスタムロール:ユーザが定義することができるロールになり、特定のニーズに合わせてより詳細に制御が可能なロールになります。

ポリシー

リソースに紐付けられており、どのメンバーにどのロールが付与されているかが定義されているもの。下記のようにJSON形式で記載することができ、バインディングリストで構成、記述します。

{
    "bindings": [
        {
            "role": "roles/storage.objectAdmin",
            "members": [
                "user:example@gmai.com",
                "serviceAccount:my-application@appspot.gserviceaccount.com",
            ] 
        },
        {
            "role": "roles/storage.objectViwer",
            "members": [
                "user:test@gmail.com",
            ]
        }
    ]
}

IAMのリソースは階層構造になっており、組織、フォルダ、プロジェクト、リソースとなっています。ポリシーはこれらの階層のそれぞれに設定でき、各リソースは親リソースのポリシーを継承します(子リソースのポリシーは継承されたポリシーの和になります)。

この記事が気に入ったらサポートをしてみませんか?