自由気ままに書いちゃおう

好きなことをつらつらと・・・

IAMポリシーのCondition要素について

「IAMポリシーの種類とEffect/Actions/Resources/Condition/Principal要素」からの続きです。

www.guri2o1667.work


今回は、Condition要素についてです。

■Conditionとは?

【何を使用するのか?】

「何ができるか」ということを最初に書くべきなのですが、
それを説明する前に「何を使用するのか」を先に説明したいと思います。
Conditionでは、「条件演算子」を使用します。
演算子には種類があり、以下の通りです。

Conditionで使用する演算子


 ・文字列条件演算子
 ・数値条件演算子
 ・日付条件演算子
 ・ブール条件演算子
 ・バイナリ条件演算子
 ・IPアドレス条件演算子
 ・ARN(Amazonリソースネーム)条件演算子

詳細な説明は下記公式ページを参照ください。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html

「条件演算子を使うんだな」と思っていただけば大丈夫です。

続いて、本題の「何ができるか」です。

【何ができるのか?】


"条件演算子を使用して、定義した条件にマッチ/アンマッチした場合にポリシーを適用する"ことができます。

私は「Resource要素と何が違うの?」って思ってました。。。笑

■Resource要素とCondition要素の違い


Resourceは、「ARNを指定するため、AWSのリソースを指定」します。
重要なのは、ARNです。
ARNを使うからResourceで定義します。

では、Conditionはどうかというと、ARNは(ほとんど)使いません。
※特殊な条件をポリシーで設定したい場合に「ARN条件演算子」を使用することがありますが、
 ここではややっこしくなるので考えないことにします。
 

Conditionでは、ARN以外を指定して条件を設定します。
例えば、「EC2のタグ名(ec2:ResourceTag)で、キー:Name、バリュー:testで始まるインスタンスのみ、起動停止を許可するポリシー」を作成したい場合、以下のようになります。

f:id:guri2o1667:20200226121842p:plain

aws.amazon.com


上記IAMポリシーをユーザやグループにアタッチすれば、
当該ユーザ/グループはNameタグにtestから始まるインスタンスのみ起動停止が可能となります。
※ヒューマンエラーの回避策ですね。

■まとめ


Conditionでは、もっとたくさんのことができますが
基本的な考え方は上記でよいかと。
上記を理解していないと、複雑なIAMポリシーの作成時に各要素の関係性で混乱してしまうので、
少しでも参考になれば幸いです。


以上です。