Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第3章:IAM(Identity and Access Management):GCPの「誰が」「何に」「何ができるか」を管理する門番

  • mhmh
  • GCP
  • 6月 2, 2025
  • 0 コメント

GCPで作業を進める上で、最も重要と言っても過言ではないのが「IAM(Identity and Access Management)」です。これは、GCPのリソースに対する「アクセス権」を管理する仕組みのことです。簡単に言えば、**「誰が(プリンシパル)」「何に(リソース)」「何ができるか(ロール)」**を細かく設定するためのセキュリティの要となります。

例えるなら、IAMはあなたの会社のセキュリティシステムです。

  • 誰が(プリンシパル): 会社の従業員や、特定の業務を代行するロボット
  • 何に(リソース): 会社の部屋、書類棚、特定のプロジェクトの資料
  • 何ができるか(ロール): その部屋に入れる、書類を閲覧できる、資料を編集できる、など

セキュリティはクラウドでも非常に重要なので、この章はしっかり理解しておきましょう。

1. 誰が?:プリンシパル(Principals)

「誰が」GCPのリソースにアクセスできるのか、その「人」や「実体」をGCPでは**「プリンシパル」**と呼びます。主なプリンシパルは以下の通りです。

  • Google アカウント(ユーザー):
    • 一番身近なのがこれ。あなたのGmailアドレスのような個人のGoogleアカウントです。例えば、your-name@gmail.com や、会社で利用している your-name@your-company.com のようなアカウントです。
    • 個人の開発者や、特定のユーザーに直接権限を付与する場合に使います。
  • サービスアカウント(Service Accounts):
    • これは**「GCP上のプログラムやサービス自身」**のための特別なアカウントです。人間ではありません。
    • 例えば、あるWebアプリケーションがデータベースにアクセスしたり、仮想マシンがCloud Storageにファイルをアップロードしたりする際に、このサービスアカウントの「身分」を使ってGCPのリソースにアクセスします。
    • 人間がパスワードを入力するように、プログラムにパスワードを直接埋め込むのはセキュリティ上良くないので、サービスアカウントを使うのがベストプラクティスです。
  • Google グループ:
    • 複数のGoogleアカウントをまとめて管理するためのグループです。
    • 例えば、「開発チーム」というGoogleグループを作り、そのグループに権限を付与すれば、グループ内の全てのメンバーが同じ権限を持つことになります。メンバーの入れ替えがあった場合も、グループのメンバーリストを変更するだけで済むので、個々に権限を付与するよりも管理が楽になります。
  • Google Workspace または Cloud Identity ドメイン:
    • 会社全体など、GCPを利用している組織の全てのユーザーに一括で権限を付与したい場合に利用します。

2. 何に?:リソース(Resources)

「何に」対してアクセスを許可するのか、その対象となるものを**「リソース」**と呼びます。GCPのリソースは階層構造になっています。

  • 組織(Organization):
    • GCPの最も大きな単位で、企業全体を表します。全てのGCPプロジェクトはこの組織の下にぶら下がります。組織レベルで設定した権限は、その下の全てのフォルダ、プロジェクト、リソースに継承されます。
  • フォルダ(Folders):
    • 組織の下に作れる、プロジェクトをまとめるための論理的なグループです。部署ごとや環境ごと(開発、本番など)にプロジェクトを整理するのに便利です。フォルダに設定した権限は、その下のプロジェクトやリソースに継承されます。
  • プロジェクト(Projects):
    • 前回の説明で出てきた、GCPにおける作業の基本単位です。ほとんどのリソースはプロジェクトの中に作成されます。
  • リソース(個別):
    • プロジェクト内にある個々のサービス(例: Compute Engineの仮想マシン、Cloud Storageのバケット、Cloud SQLのインスタンスなど)

権限は、この階層の上位から下位へ継承されます。例えば、プロジェクトに対して「閲覧者」の権限を与えると、そのプロジェクト内の全ての仮想マシンやストレージも「閲覧」できるようになります。

3. 何ができるか?:ロール(Roles)

「何ができるか」を定義するのが**「ロール(役割)」です。ロールは、特定のGCPリソースに対して許可される「権限(Permissions)」**の集まりです。

  • 権限(Permissions):
    • compute.instances.start」(Compute Engineのインスタンスを起動する)や「storage.objects.get」(Cloud Storageのオブジェクトを取得する)のように、個々の具体的な操作を許可するものです。
  • ロール(Roles):
    • これらの個々の権限が、特定の役割に合わせて事前にまとめられています。
    • 基本的なロール:
      • オーナー(Owner): プロジェクト内の全てのリソースに対する全権限を持ち、他のユーザーに権限を付与することもできます。非常に強力な権限なので、付与は慎重に!
      • 編集者(Editor): リソースの作成、変更、削除など、ほぼ全てのリソース操作ができますが、他のユーザーに権限を付与することはできません。
      • 閲覧者(Viewer): リソースの情報を閲覧することのみができます。変更や削除はできません。
    • 事前定義ロール(Predefined Roles):
      • GCPがサービスごとに予め定義している、特定の役割に特化したロールです。例えば、「Compute Engine インスタンス管理者」や「BigQuery データ閲覧者」、「Storage オブジェクト作成者」など、数千種類ものロールがあります。通常はこれらのロールを使用することが推奨されます。
    • カスタムロール(Custom Roles):
      • 事前定義ロールでは満たせない、より細かく特定の権限のみを許可したい場合に、自分で権限を組み合わせて作成するロールです。
      • これは、本当に必要な最小限の権限のみを付与する「最小権限の原則(Principle of Least Privilege)」を実践するために非常に役立ちます。

IAM ポリシー:権限の設定方法

これらの「プリンシパル」「リソース」「ロール」の組み合わせを「IAMポリシー」と呼びます。GCPの各リソースには、このIAMポリシーが設定されています。

  • ポリシーの構成:
    • 「Aさん(プリンシパル)は、このプロジェクト(リソース)で、閲覧者(ロール)の役割を持つ」
    • 「Webサーバーのサービスアカウント(プリンシパル)は、特定のCloud Storageバケット(リソース)に対して、オブジェクト作成者(ロール)の役割を持つ」

あなたはGoogle Cloud コンソールの「IAM」セクションから、これらの設定を簡単に行うことができます。

まとめ:IAMの重要性

IAMは、GCPを安全に利用するための基盤です。

  • 誰が何をできるかを明確にすることで、不正アクセスや誤操作を防ぎます。
  • 特にサービスアカウントの利用は、アプリケーションのセキュリティにおいて非常に重要です。
  • 最小権限の原則」に従い、必要最小限の権限のみを付与するように常に心がけましょう。これにより、万が一アカウントが不正利用されても、被害を最小限に抑えることができます。

最初のうちは少し複雑に感じるかもしれませんが、実際にプロジェクトを作成し、チームメンバーやサービスアカウントに権限を付与する経験を重ねるうちに、IAMの概念は自然と身についていきます。GCPの安全な運用には不可欠な知識ですので、じっくりと学んでいきましょう!

mh

Related Posts

  • mhmh
  • GCP
  • 6月 23, 2025
  • 74 views
Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • mhmh
  • GCP
  • 6月 20, 2025
  • 91 views
Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 56 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 74 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 72 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 91 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 79 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 95 views