BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【GCP】IAMってなんだ ~権限とロール編~

初めに

こんにちは。株式会社BFT名古屋支店 ないとうです。
先日からGCPを触り始め、最初につまずいたポイント『IAM』
今回はこちらについて書いていきたいと思います。

IAMとは

GCPの公式サイトにはIAMについて以下のように記載されています。

Identity and Access Management(IAM)を使用すると、特定のリソースに対するアクションの実行を、承認を受けたユーザーのみに許可できます。※1

つまり、IAMとはクラウド上でのリソースに対してのアクセスを制御するためのサービスということです。
このリソースは、GCPサービスだけでなくユーザ、GCP上ユーザが作成したあらゆるもの(バケットやGCEインスタンスなど)も含まれます。

権限とロール

IAMは権限ロールと呼ばれるものを用いて、リソースへのアクセス制御を行っています。
権限は名前のまま、リソースにアクセスするための権限であり、
ロールは権限の集合体で、リソースに対してある特定の動作(例えばインスタンスを作成、操作)を実行できるようにするつまりリソースに役割を与えるものになります。
なので
権限は細かく制御できるのですが、必要な権限を洗い出すのが大変です。
一方でロールというように動作単位で割り当てることが出来るので、比較的簡単ではありますが、過剰な権限を与えてしまう可能性があります。

図1:ロールと権限の関係イメージ

ロールの種類

先ほど記載した通り、ロールは権限の集合体で役割をリソースに与えるものになりますが、
事前にGCPが準備したロールが存在し、簡単に役割の付与ができるようになっています。
しかしながら、ピンポイントで権限を付与したい場合、直接権限を割り当てる方法の他に、自分でロールを作成するカスタムロールというものも使うことが出来ます。
カスタムロールの利点は、一度作成してしまえば権限を他のリソースに付与するときに簡単に実装できることです。

まとめ

IAMサービスの権限とロールは、様々なリソースに対するアクセス制御をおこないます。
自分の操作したいリソースに適した権限、ロールを付与することで、安全にGCPサービスを使用することが出来ます。

おわりに

今回は権限とロールについて、書きました。
次回はリソースの部分である、ユーザとサービスアカウントについて書いていきたいと思います。
IAMはやっぱり概念的なもので理解が難しいですね。
それではまた。

参照

※1 IAMドキュメント

cloud.google.com