投稿 2024年12月1日
更新 2024年12月1日
専門用語の数:多
今回はIAMポリシーの基本的な書き方や、便利な書き方をご紹介していきます。
IAMポリシーはJsonを直接触らなくとも、ある程度は視覚的にわかりやすく
ポリシーを作れる画面を用意してくれています。
ただし、柔軟な条件や込み入った設定はできないため、
状況に応じてご使用くださればと思います。
ざっくりJsonの構成は下記のようになっています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "*"
}
]
}
記事を書いている時点では「2012-10-17」が最新です。
このバージョンにより、使える機能が変わってきますので、気を付けましょう。
基本的には最新のバージョンを使用しましょう。
Json内で一意のIDです。
英数字のみで、省略可能です。
そこまで深い意味はなく、名前のような感覚で差し支えないと思います。
Actionで指定したコマンドを、
「Allow」or「Deny」で許可するか拒否するかを指定します。
許可(拒否)したいコマンド(行動)を指定します。
「s3:DeleteObject*」のようにアスタリスクを使うことで、
0文字以上のあいまいな指定をすることも可能です。
上記の指定の場合、
が該当します。
記載したアクション以外を指定したければ、
ActionではなくNotActionと記載することで実現できます。
コマンドを行う対象のリソースarnを指定します。
「arn:aws:s3:::test-bucket/*」のようにアスタリスクを使うことで、
0文字以上のあいまいな指定をすることも可能です。
上記の指定の場合は、test-bucketの中のすべてのオブジェクトが指定されます。
記載したリソース以外を指定したければ、
ResourceではなくNotResourceと記載することで実現できます。
バケットの中身は見せずに、シンプルに特定のオブジェクトだけを共有する際に使用する想定です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::test-bucket/setup.exe"
}
]
}
バケットの中身も見せるが、指定したバケットの中身しか見れない権限です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::test-bucket",
"arn:aws:s3:::test-bucket/*",
"arn:aws:s3:::sample-bucket",
"arn:aws:s3:::sample-bucket/*"
]
}
]
}
リソースが若干ややこしいですが、arn:aws:s3:::バケット名
がs3:ListBucket
に対するリソース指定で、arn:aws:s3:::バケット名/*
がs3:GetObject
に対するリソース指定です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject*",
"s3:PutObject*",
"s3:DeleteObject*"
],
"Resource": [
"arn:aws:s3:::*develop*",
"arn:aws:s3:::*develop*/*"
]
}
]
}
対象リソースはproductionとつかないバケットで、
対象アクションは削除オブジェクト以外です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"NotAction": [
"s3:DeleteObject*"
],
"NotResource": [
"arn:aws:s3:::*production*",
"arn:aws:s3:::*production*/*"
]
}
]
}
IAMポリシーの基本的なJsonの書き方を紹介しました。
まだまだ応用的な使い方ができますが、凝れば凝るほど難しくなります…。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。
コメント一覧