最初の難関、IAMについて 〜クラスメソッド Google Cloud Advent Calendar 2021〜

クラスメソッド Google Cloud Advent Calendar 2021 1日目の記事です。
2021.12.01

はじめに

どーも、CX事業本部 MAD事業部の 田中孝明 です。

本エントリは クラスメソッド Google Cloud Advent Calendar 2021 の 1日目 の記事です。

クラスメソッドでも Google Cloud をガンガン活用していくぞ!(あるいは既にしているぞ!)と言う気概のもと、今回のアドベントカレンダー企画が発足しました。

12/25 までの間、社内で Google Cloud を広めていきたい方々の熱い思いが綴られると思いますのでよろしくお願いします!

IAM について

IAM は、どのクラウドサービスにも存在する、ユーザーやリソースに対しての権限を管理するサービスです。プロジェクトやリソース階層などの概念と同時にこの IAM の壁にぶつかります。本ブログでは自分が IAM を理解する上で気になった点をピックアップしました。

サービスアカウント について

Google Cloud の IAM を使う上で、ユーザーアカウントとサービスアカウントの違いを理解する必要があります。サービスアカウントは、ユーザーにではなく各サービスを利用するための権限を付与できる特別なアカウントです。また、アプリケーションはサービスアカウントキーをつかって Google Cloud の各種リソースへのアクションを実行できます。

ユーザーではなく、サービス毎に作成して付与することでユーザーの権限に依存しない最小限の権限で実行することが可能になります。開発中に使用する場合などの注意点もあります。

ロール について

Google Cloud リソースに対して、読み込み、書き込みなどの操作を実行できるようにする権限をあらわすものです。ロールは3つのタイプが存在します。

基本ロール

元々 Primitive Role と呼ばれていたもので、IAM の導入前に存在していたオーナー、編集者、閲覧者のロールが含まれます。オーナー、編集者、閲覧者の各ロールは入れ子構造になっています。全ての Google Cloud サービスに関わる何千もの権限が含まれているので、本番環境では付与しないようにする必要があります。

  • 閲覧者 (roles/viewer)
    • 既存のリソースやデータの表示など、状態に影響しない読み取り専用アクションに必要な権限を持つ
  • 編集者 (roles/editor)
    • すべての閲覧者権限に加えて状態を変更するのに必要な権限を持つ
  • オーナー (roles/owner)
    • すべての編集者権限と、以下のアクションを実行するために必要な権限を持つ
    • プロジェクトおよびプロジェクト内のすべてのリソースの権限とロールを管理
    • プロジェクトの課金情報を設定

事前定義ロール

Google によって作成され、管理されている、特定の作業を行うロールにふさわしい権限を予め付与されいてるロールです。イメージは Managed Policy に近いかもしれません。

特定の Google Cloud リソースに対してきめ細やかなアクセス権を付与し、他のリソースへの望ましくないアクセスを防ぐことができます。これらのロールは Google は、Google Cloud によって新しい機能やサービスが追加された場合など、必要に応じて権限を自動的に更新します。

量が多いので実際に確認していただいた方がいいかもしれません。

カスタムロール

事前定義ロールに加えて、カスタマイズされた IAM ロールを作成する機能があります。カスタムロールは、組織内のプリンシパルに必要な権限のみを持つようにするため、最小権限の原則を実施する際に必須になります。

Recommender を利用して、過去 90 日間に使用した権限を元にポリシーの分析情報を生成します。この機能を利用して制限の緩すぎるロールを適切なロールに置き換えます。

まとめ

ここで記載した内容はともかく、「Google Cloudのしくみと技術がしっかりわかる教科書」と言う名著がありますので、はじめて Google Cloud に触れられる方は一読されることをお勧めします。この名著に欲しい情報が記載されていますので参考にしていただければと思います。

本の内容については、弊社のブログで書評が上がっていますのでそちらも併せて参照いただければ幸いです。

明日 12/2 は 岩田智哉 さんです。よろしくお願いします!