「IAMポリシーの種類とEffect/Actions/Resources/Condition/Principal要素」からの続きです。
今回は、Condition要素についてです。
■Conditionとは?
【何を使用するのか?】
「何ができるか」ということを最初に書くべきなのですが、
それを説明する前に「何を使用するのか」を先に説明したいと思います。
Conditionでは、「条件演算子」を使用します。
演算子には種類があり、以下の通りです。
Conditionで使用する演算子
・文字列条件演算子
・数値条件演算子
・日付条件演算子
・ブール条件演算子
・バイナリ条件演算子
・IPアドレス条件演算子
・ARN(Amazonリソースネーム)条件演算子
詳細な説明は下記公式ページを参照ください。
「条件演算子を使うんだな」と思っていただけば大丈夫です。
続いて、本題の「何ができるか」です。
【何ができるのか?】
"条件演算子を使用して、定義した条件にマッチ/アンマッチした場合にポリシーを適用する"ことができます。
私は「Resource要素と何が違うの?」って思ってました。。。笑
■Resource要素とCondition要素の違い
Resourceは、「ARNを指定するため、AWSのリソースを指定」します。
重要なのは、ARNです。
ARNを使うからResourceで定義します。
では、Conditionはどうかというと、ARNは(ほとんど)使いません。
※特殊な条件をポリシーで設定したい場合に「ARN条件演算子」を使用することがありますが、
ここではややっこしくなるので考えないことにします。
Conditionでは、ARN以外を指定して条件を設定します。
例えば、「EC2のタグ名(ec2:ResourceTag)で、キー:Name、バリュー:testで始まるインスタンスのみ、起動停止を許可するポリシー」を作成したい場合、以下のようになります。
上記IAMポリシーをユーザやグループにアタッチすれば、
当該ユーザ/グループはNameタグにtestから始まるインスタンスのみ起動停止が可能となります。
※ヒューマンエラーの回避策ですね。
■まとめ
Conditionでは、もっとたくさんのことができますが
基本的な考え方は上記でよいかと。
上記を理解していないと、複雑なIAMポリシーの作成時に各要素の関係性で混乱してしまうので、
少しでも参考になれば幸いです。
以上です。