見出し画像

【PART6 IAMポリシー Q】ぜんぜんわからなかったIAMについてまとめてみました

こんにちはこぐまです。
ぜんぜんわからなかったIAMシリーズ6回目です。

まずは当たり前のようにポリシーの決まり文句から(笑)

ポリシーは、ただの手紙です。
その手紙の呼び方がたくさんありますが、大きく分けて3種類あります。
①手紙の使用用途での呼び方
②手紙の作り方での呼び方
③手紙を渡す(アタッチする)ときの呼び方

前回は「①手紙の使用用途での呼び方」について記載しました。
6種類あり、そのうちもっとも利用するのが「アイデンティティベースのポリシー」であることを説明しました。
今回は、「②手紙の作り方での呼び方」について記載していきたいと思います。

手紙の作り方は3パターン!

ポリシーはただの手紙ですが、その手紙の「作り方」は3パターンあります。

1.AWSが用意してくれたものをそのまま使う。
2.AWSが用意してくれたものを少し編集して作る。
3.1から自分で作る。

手紙(1は作っていませんが(笑))を区別するときに、それぞれの作り方で呼びます。では、その呼び方です。

1,2については、大枠として「管理ポリシー」と呼びます。
そして、より細かく1を「AWS管理ポリシー」、2を「カスタマー管理ポリシー」と呼びます。
一方、3は「インラインポリシー」と呼びます。

手紙の作り方での呼び方としてはこれだけです。(※1)
簡単にまとめるとこんな感じです。

手紙の作り方での呼び方をまとめた感じ。

(※1)図にも少しだけ記載しましたが、AWS管理ポリシーの中には、さらに利用者の権限や用途に対して即座にアタッチすることを想定した「AWS管理-ジョブ機能」という呼び方もあります。たとえば、開発者向け「PowerUserAccess」、請求確認「Billing」などです。全部で11種類あります。役割に応じた最適な権限セットみたいな感覚ですので、まずはこれらのポリシーをアタッチしていくのも近道です。

管理ポリシーとインラインポリシーの大きな違い

自分で作るか、すでに出来合いのものから作るか、という違いはありますが、それ以外に代表的なものとして以下があります。

diff1.ARNがあるかないか?
管理ポリシー・・ARNが割り当てられている。
インラインポリシー・・ARNが割り当てられていない。

diff2.アタッチできるアイデンティティ数
一つの管理ポリシー・・・たくさんのアイデンティティにアタッチできる。一つのインラインポリシー・・・一つのアイデンティティにしかアタッチできない。

diff3.手紙を受け取る相手がいなくなった時の動き
管理ポリシー・・・残る
インラインポリシー・・・共に消える。

ARNとは、「Amazon Resource Name」の略で、AWSの中でリソースを一意に識別するための記号のようなものです。調査依頼やログを調べたりするときに役立ちます。
diff2.diff3は管理ポリシーとインラインポリシーの特に大きな違いで、インラインポリシーは基本的に手紙を受け取る相手と1対1で紐付くので、
手紙を受け取る相手が削除されると、インラインポリシーも共になくなります。管理ポリシーはなくなりません。

画面ではどう見える?

AWSマネジメントコンソールのIAMの画面で、管理ポリシー、インラインポリシーがどう見えるか見てみましょう。IAMの画面から「ポリシー」を選んでみます。

すると多くのポリシーが見えます。
ポリシーの「タイプ」という列に注目します。(※2)
この部分が、ここで説明している「②手紙の作り方による呼び方」が確認できる場所です。ほとんどが、「AWS管理」、「カスタマー管理」で、一部「AWS管理-ジョブ機能」というものが見えると思います。

ポリシーの「タイプ」という列に、ここで説明した「②手紙の作り方での呼び方」である
「AWS管理」「カスタマー管理」などの用語が確認できる。

例えばどれか一つのポリシーをクリックしてみると、その管理ポリシーのポリシーARNが確認できます。

ポリシーARNが確認できる。

他にもこのポリシーの手紙の中身、アタッチされているアイデンティティ、ポリシーのバージョンなどが確認できます。
管理ポリシーについては、こんな感じで確認できます。

(※2)「①手紙の使用用途での呼び方」で紹介した6種類のポリシー名(アイデンティティベース、リソースベース・・など)をマニュアルでは「ポリシータイプ」と呼んでいます。しかしここで紹介したIAMの画面の「タイプ」列ではその6種類の名前は一切でてきません。
代わりに「タイプ」列に出てくるのがここで紹介している「②手紙の作り方での呼び方」です。つまり、「AWS管理ポリシー」「カスタマー管理ポリシー」という名称です。
このようにマニュアルと実際の画面で「タイプ」というものの定義が違っていたことも、この記事をまとめていこうと思ったきっかけになりました。

なおマニュアルでは以下のような記載があります。
「アイデンティティベースのポリシーはさらに管理ポリシーとインラインポリシーに分かれます、リソースベースはインラインのみで、管理はありません・・」
つまり、「①手紙の使用用途での呼び方」をより分割した呼び方として「管理ポリシー」や「インラインポリシー」があるという考え方です。

インラインポリシーはどこで確認する?

前述のIAMのポリシーの画面では、タイプの部分に「インラインポリシー」は一つも出てきません。インラインポリシーはどこで確認できるのでしょう?

先ほど説明した通り、インラインポリシーは、手紙を受け取る相手と1対1で紐付いているポリシーです。なので、受け取る相手(アイデンティティ)から確認できます。

とはいっても、初期状態でインラインポリシーは一つも存在していないので、まずは作る必要があります。
IAMの画面で適当なユーザーを選択します。そして「アクセス権限」のタブで、「インラインポリシーの追加」をクリックします。

ユーザーを選択し、右側の「インラインポリシーの追加」から作成・追加できる。

ここから手紙の中身を作成し(ポリシーの作成方法は省略します)、適当な名前を付けると、先ほどの「アクセス権限」のタブの部分にポリシータイプ「インラインポリシー」として表示されます。

test-inline-policyという名前で作成したポリシーが、インラインポリシーとして認識されている。
このインラインポリシーは、このユーザー(ここではkoguma-test)専用である。
koguma-testユーザが消えれば、「test-inline-policy」も併せて消える。

つまり、画面上でインラインポリシーを確認するには、インラインポリシーをアタッチしたユーザごと(※3)に、アクセス権限タブで確認する必要があります。ちょっと面倒ですよね・・また、ユーザと1対1なので、どのユーザにアタッチしているのかをちゃんと管理していないとわけわからなくなりそうです。
そんなわけでインラインポリシーは一応手紙の作り方の一つの方法として用意されてはいますが、できる限り、管理ポリシー(AWS管理、カスタマー管理)を利用することを推奨されています。

(※3)
インラインポリシーは手紙を受け取る相手と1対1の関係です。ここでいう手紙を受け取る相手ですが、IAMユーザーだけでなく、IAMグループIAMロール一部のAWSリソースも含まれます。
例えば、IAMの管理画面から適当なユーザグループを選択し、「許可」タブ→「許可を追加」→「インラインポリシーの作成」でそのIAMグループと1対1の関係を持つインラインポリシーをアタッチすることができます。

なお、一部のAWSリソースとは、前回「①手紙の使用用途による呼び方」の2番目「リソースベースのポリシー」を適用できるリソースのことです。S3とかECRとかが該当します。S3の場合は、特に限定して「バケットポリシー」と呼んでいます。これらのポリシーも「②手紙の作り方による呼び方」では「インラインポリシー」となります。
ですので、「リソースベースのポリシー」はすべて「インラインポリシー」となります。つまりどういうことかというと、リソースを削除したらそこに紐付いていたポリシーは一緒に消えるということを意味しています。

①手紙の使用用途での呼び方と、②手紙の作り方での呼び方の関係

もう一度繰り返しますが、ポリシーはただの手紙です。
手紙にはいろんな呼び方がありますが、
①手紙の使用用途での呼び方
②手紙の作り方での呼び方
③手紙を渡す(アタッチする)ときの呼び方

として分けて考えると理解しやすいと考えています。
ここまでで、「①使用用途での呼び方」「②手紙の作り方での呼び方」を説明してきました。
じゃあ結局①と②はどう紐付いているのかが気になる方も多いと思います。
一部マニュアルに記載されている部分もありますが、ここから先は私オリジナルの見解です。こうしたら理解しやすいんじゃないかな・・というあくまで一例です。

①と②の関係。点線はやや自信のないところ

ポイントとしては、
使用用途リソースベースポリシー」には、「管理ポリシー」は使えない。
使用用途アクセス許可の境界」には、「インラインポリシー」は使えない。
ですね。下に行くほど優先度は低くなるので、あまり厳密に区別して気にする必要もないのかもしれませんが、一応分けてみました。

(点線部分について)
・組織SCPについて、明確な記載はありませんが、組織単位(OU)にアタッチするポリシーはJSON形式で0から作っており、かつ1対1の関係なので、インラインポリシーだと思っています。
・セッションポリシーのマニュアルの説明には、管理ポリシーという一文も記載されていますが、これをコマンドの引数として実際どのように利用するのかはよく理解できていません。

以上、「②手紙の作り方での呼び方」を紹介してきました。
次は最後「③手紙を渡す(アタッチする)ときの呼び方」について説明していきます。

本日はここまで。
読んで下さってありがとうございました!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?