AWS IAMポリシーを徹底的に調べる
IAMポリシーは何となくとっつきにくい感じがあります。
ということで徹底的に調べてビジュアルエディターではなくJSONで書いてみます。
AWSはいつからかビジュアルエディターも用意してくれていますが、根本を理解するためにJSONで書いてみたいと思います。
バージョンを指定する
ポリシーで明示的にアクセスポリシー言語の「2012-10-17」バージョンを指定する必要があります。
アクセスポリシー言語のデフォルトバージョン (2008-10-17) では、ポリシー変数をサポートしていません。
“Statement”: []の中にJSONオブジェクトで記述する
「”Statement”: []」はステートメント配列って言います。この中にJSONオブジェクトを格納していきます。
サンプル
{ "Version": "2012-10-17", "Statement": [] }
Sidとは
SidとはステートメントIDのことで、ポリシードキュメントに与える任意の識別子です。
JSONポリシー内で固有であればSid値はなんでも構いません。
Effectとは
Effectエレメントは必須項目です。ステートメントの結果を許可または明示的な拒否のどちらにするかを指定します。
“Allow”、または、”Deny”のどちらかを指定します。
Actionとは
Actionエレメントは、必須ではありませんが指定しない場合はNotActionエレメントを指定する必要があります。
以下、Actionエレメントの例です。
"Action": "sqs:SendMessage"
複数指定する場合は配列で指定することができます。
"Action": [ "sqs:SendMessage", "sqs:ReceiveMessage"]
ワイルドカードが使用できる
上記例の通り、sqsには複数のActionがあります。これを全て指定する場合は「*」を使用します。
"Action": "sqs:*"
IAMポリシーは、どのエンティティ(AWSサービス)に対してどのアクションを許可・拒否するかをJSON形式で定義したものです。
試しに書くと以下のような感じです。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Action": [ "dynamodb:Scan", "sns:Publish" ], "Resource": "*" } ] }
IAMロールとは
IAMロールとは、どのエンティティ(AWSサービス)に権限を付与するためのIAMオブジェクトになります。ユーザやグループは関係ありません。
例えばLambdaからDynamoDBにアクセスする場合は、IAMロールはLambdaにアタッチしておく必要があります。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント