モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約、プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

GCP Cloud IAM の基本的な使い方

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
「」ステッカーの表示権
メッセージ
料金
¥(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

※利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

公開日公開日
2021/05/16
最終更新最終更新
2024/06/25
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    AWS と Google Cloud の資格試験の勉強中

    0
    ステッカーを贈るとは?

    GCP における Cloud IAM について、基本的な使い方を記載します。

    用語

    Permission

    .. という形式で表現されます。例えば、後述の Custom Role を作成するためには iam.roles.create permission が必要です。Permission は通常、ある一つの REST メソッドに対応しています。

    Role

    複数の permission をまとめたものです。

    Member

    以下のいずれかを指します。

    • ユーザーアカウント xxxx@gmail.com、xxxx@qoosky.io
    • サービスアカウント xxxx@*.gserviceaccount.com
    • グループ xxxx_group@qoosky.io
    • Cloud Identity (または Google Workspace) ドメイン qoosky.io

    Policy

    IAM policy は以下の4つのレベルで作成できます。上位のレベルで作成したポリシーは、下位のレベルでも適用されます。

    • organization
    • folder
    • project
    • resource

    一つの IAM policy は、複数の binding を持ちます。ある binding は一つの role と複数の member を関連付けます。

    {
      "bindings": [
        {
          "role": "roles/storage.objectAdmin",
           "members": [
             "user:ali@example.com",
             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
             "group:admins@example.com",
             "domain:google.com"
           ]
        },
        {
          "role": "roles/storage.objectViewer",
          "members": [
            "user:maria@example.com"
          ]
        }
      ]
    }
    

    allAuthenticatedUsers

    Member すべてを指します。

    allUsers

    Member に加えて、ログインしていない匿名ユーザも対象となります。

    Role の分類

    Basic roles

    以下のいずれかです。初期の GCP では Predefined roles が存在しておらず、これら三つのみが存在していたという歴史的な経緯があります。

    • Owner
    • Editor
    • Viewer

    Predefined roles

    Basic roles よりも細かくアクセス制御ができます。

    Custom roles

    organization または project レベルで作成できます。それぞれ、以下の Role が必要になります。

    • organization → roles/owner または roles/iam.organizationRoleAdmin (roles/resourcemanager.organizationAdmin に権限はありません)
    • project → roles/owner または roles/iam.roleAdmin

    roles/iam.securityReviewer は custom role の管理はできませんが、閲覧はできます。

    gcloud コマンド例

    Permission 情報の取得

    引数に指定した organization、project または resource に関する permission 一覧を表示します。

    gcloud iam list-testable-permissions //cloudresourcemanager.googleapis.com/projects/$DEVSHELL_PROJECT_ID
    

    Role 情報の取得

    Predefined roles の表示

    gcloud iam roles list
    

    Custom role の表示 (organization レベルまたは project レベル)

    gcloud iam roles list --project $DEVSHELL_PROJECT_ID
    gcloud iam roles list --project $DEVSHELL_PROJECT_ID --show-deleted
    gcloud iam roles list --organization [ORGANIZATION_ID]
    

    引数に指定した organization、project、resource に関する role 一覧の表示

    gcloud iam list-grantable-roles //cloudresourcemanager.googleapis.com/projects/$DEVSHELL_PROJECT_ID
    

    あるロールの情報を取得

    gcloud iam roles describe roles/editor
    gcloud iam roles describe myCustomRole --project $DEVSHELL_PROJECT_ID
    

    Custom Role の作成

    gcloud iam roles create myCustomRole --project $DEVSHELL_PROJECT_ID --file my-role-definition.yaml
    

    my-role-definition.yaml

    title: My Custom Role
    description: My Custom Role
    stage: ALPHA
    includedPermissions:
    - appengine.versions.create
    - appengine.versions.delete
    

    または以下のようにしても同じです。

    gcloud iam roles create myCustomRole --project $DEVSHELL_PROJECT_ID \
    --title "Role Custom Role" --description "Role Custom Role" \
    --permissions compute.instances.get,compute.instances.list \
    --stage ALPHA
    

    Custom Role の更新

    複数の人が同時に同じ Custom Role を更新することを避けるために etag を指定する必要があります。

    gcloud iam roles update myCustomRole --project $DEVSHELL_PROJECT_ID --file my-new-role-definition.yaml
    

    my-new-role-definition.yaml

    title: My Custom Role
    description: My Custom Role
    stage: ALPHA
    includedPermissions:
    - appengine.versions.create
    - appengine.versions.delete
    - storage.buckets.get
    - storage.buckets.list
    etag: [ETAG]
    

    Add permission

    あるいは、以下のように permission を追加することもできます。

    gcloud iam roles update myCustomRole --project $DEVSHELL_PROJECT_ID \
    --add-permissions storage.buckets.get,storage.buckets.list
    

    Custom Role の無効化または削除

    無効化 (stage: DISABLED となります)

    gcloud iam roles update myCustomRole --project $DEVSHELL_PROJECT_ID --stage DISABLED
    

    削除

    gcloud iam roles delete myCustomRole --project $DEVSHELL_PROJECT_ID
    

    削除フラグが立った後の流れは以下のようになります。

    • 7日後、削除が始まります。stage: DEPRECATED となります。
    • 更に 30日後、完全に削除されます。

    7日以内であれば、以下のコマンドで削除を取り消せます。

    gcloud iam roles undelete myCustomRole --project $DEVSHELL_PROJECT_ID
    

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

    gcloud iam service-accounts create my-sa-20210516 --display-name 'my service account'
    
    gcloud projects add-iam-policy-binding $DEVSHELL_PROJECT_ID \
    --member serviceAccount:my-sa-20210516@$DEVSHELL_PROJECT_ID.iam.gserviceaccount.com \
    --role roles/editor
    

    Google-managed サービスアカウントの表示

    例えば Data Fusion API を有効化すると、以下のサービスアカウントへの IAM 権限が付与されます。

    service-customer-xxx@gcp-sa-datafusion.iam.gserviceaccount.com

    管理コンソールから、付与された IAM を確認するには "Include Google-provided role grants" にチェックを入れる必要があることに留意します。

    参考資料:

    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    AWS と Google Cloud の資格試験の勉強中

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事