Loading
BLOG 開発者ブログ

2018年12月2日

【Cloud IAM】よくわからない… から、わかった!へ

「ポリシー」「役割」「権限」など、たくさん単語が出てきて最初は難しく感じるCloud IAM。整理してひとつずつ意味を理解し、Cloud IAMの全体像をつかみましょう!

この記事は アイソルート Advent Calendar 2日目の記事です。

モバイルソリューショングループの arai.ya です。こんにちは。

Google Cloud Platform (GCP) は、ハードウェアレベルでのセキュリティ保護や、ストレージにデータを保存する際の暗号化、通信時の暗号化など、さまざまなレイヤーでセキュリティを確保することで、信頼できるインフラを提供してくれています。
ですが、いかにインフラのセキュリティレベルが高くても、それを使う私達が設定不足や操作ミスなどにより、自分たちの大切なサービスに弱点をつくっては意味がありません。

今日は、私達自身がセキュリティを高めるために利用できるGCPサービスのひとつである、Cloud IAMについて紹介します。様々なチュートリアルなどで登場するものの、よくわからないまま言われたとおりに設定している人も多いのではないでしょうか?

でも、登場する単語の意味をひとつずつ確認することで必ず理解できるようになります!


Cloud IAMとは?

Cloud Identity and Access Management (Cloud IAM) とは、「誰が」「どのリソースに対し」「どのような操作ができるか」を定義し、アクセス制御を実現するために提供されているGCPのサービスです。

Cloud IAMを使用し適切な権限を設定することで、GCPの各リソースへの望ましくないアクセスを防ぎセキュリティを高めたり、操作ミスなどのヒューマンエラーを少なくしたりすることができます。


Cloud IAMを理解するポイント: 「メンバー」「リソース」「権限」「役割」

上にも書いたように、IAMでは「誰が」「どのリソースに対し」「どのような操作ができるか」を定義するので、この3つを意識することが重要です。
ちなみに、この「誰が」「どのリソースに対し」「どのような操作ができるか」のセットを「IAMポリシー」と呼びます。

「誰が」の部分には以下のいずれかが当てはまります。これを「メンバー(Members)」と呼びます。

  • Google アカウント
    • 個人でGCPを利用する場合などに使用するアカウント。gmail.comや他のドメインのメールアドレスが紐づくやつ。
  • サービスアカウント
    • 個々のユーザではなく、アプリケーションに属するアカウント。使いたい数だけ発行し、アプリに組み込んで使う。
  • Google グループ
    • Google アカウントとサービスアカウントを任意の数だけまとめて名前をつけたもの。
  • G Suite ドメイン
    • 企業などの組織でGCPを利用する場合に使用する、Google アカウントの仮想的なグループ。
  • Cloud Identity ドメイン
    • G Suite ドメインに似ているが、G Suiteの機能にはアクセスできないユーザアカウント。


「リソース(Resources)」とは、具体的にはGCPリソースが当てはまります。例えば以下のようなものです。

  • GCPプロジェクト
  • Compute Engine インスタンス
  • Cloud Storage バケット
  • etc…


「どのような操作ができるか」は対象のリソースにより異なりますが、

  • 読み取りのみ可
  • 読み書き可
  • etc…

のような事柄が当てはまります。
リソースに対しどのような操作ができるか、を示すものを「権限(Permissions)」と呼びます。

また、複数の権限をまとめたものは「役割(Roles)」と呼ばれ、現在、役割には次のような分類があります。

  • 基本の役割
    • GCPにIAMが登場する前からある基本的な役割。対象リソースはGCPプロジェクト全体で、かなりざっくりした権限の指定の仕方。オーナー、編集者、閲覧者がある。
  • 事前定義済みの役割
    • 予め用意されている、基本の役割よりも細かく(各サービスごと、など)権限を指定した役割。
  • カスタムの役割
    • 事前定義済みの役割がニーズを満たしていない場合に、そのニーズに応じて任意に権限を組み合わせるために使用する役割。

実際にIAMポリシーを定義するときは、メンバーに役割を設定することでアクセス権限を付与します。


Cloud IAMのベストプラクティス

Cloud IAMを正しく使用し、GCPリソースをセキュアに保つため、Googleはベストプラクティスを作成し、公開しています。ここではそのうちのいくつかを紹介します。

  • できるだけ最小限の権限を付与するようにしましょう。可能な限り、「基本の役割」よりも「事前定義済みの役割」を使用し、細かく権限を付与しましよう。
  • 可能な限り、個々のユーザに対してではなく、グループに対して役割を付与しましょう。
  • IAMポリシーやグループを管理する権限は、正当な目的のあるユーザにのみ付与しましょう。
  • Cloud Audit Logging (監査ログ)を使用し、IAMポリシーの変更を定期的に監査しましょう。
  • サービスアカウントキーはソースコードなどに埋め込まないようにしましょう。

この他にも様々なアドバイスが提示されているので、IAMの全体像を把握できたら、ぜひ他の項目も目を通してみてください。


むすび

リソースや権限、役割など、IAMを使う上で必ず知っておく必要のある言葉の意味が、なんとなくでも伝わったでしょうか?
この記事が、Cloud IAMのポイントを抑えて全体像を掴むための手助けになれば嬉しいです。

Cloud IAMを正しく利用し、安全でセキュアなサービスの運用をしていきましょう 🙂


明日は tahara さんの 【体験談】本社のメイン回線切替をおこなってみた! です!