【初心者向け】IAMポリシー(JSON)の見方

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

はじめに

突然ですが、IAMポリシーは、JSONで表示および設定することができますが、 JSONで書かれているとなんとなく難しく感じ、敬遠している方もいるのではないでしょうか。

実は、JSON表記の見方はそんなに難しくなく、IAMの詳細は把握する上では、JSONの見方を理解する必要がありますし、 IAMポリシーを設定する場合、JSONでやった方が楽だと思っています。

ということで、今回は、IAMポリシー(JSON)の見方をご紹介いたします。

JSONの見方

今回は、以下のEC2のフルアクセス権限を持ったIAMポリシーのJSONを基に見方をご説明いたします。 ※今回は、よく使う要素(Sid,Effect,Action,Resource,Condition)を簡単にご紹介します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2FullAccess",
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalArn": "arn:aws:iam::123456789123:user/fk-iam-user" 
            }
        }
    ]
}

固定の記述

まず、以下の部分は固定の記述なので、説明は割愛します。 ちなみにですが、Versionの部分は、「"2012-10-17"」と固定です。 IAMポリシーを作成した日付を入力しないように注意してください。

{
    "Version": "2012-10-17",
    "Statement": [
        ★ここの中身が大事
    ]
}

大事なのは、Statementの中身(上記、★の箇所)になります。

        {
            "Sid": "EC2FullAccess",
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*"
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalArn": "arn:aws:iam::123456789123:user/fk-iam-user" 
            }
        }

この中身をさらに分割して説明します。

Sid

            "Sid": "EC2FullAccess",

Sidは、任意の設定となります。設定しなくても問題ないのですが、設定する場合、IAMポリシーの説明を記載するのが一般的です。

Effect

            "Effect": "Allow",

Effenctには、AllowまたはDenyを設定します。 この設定により、この後説明するActionを許可(Allow)するのか、 拒否(Deny)するのか、設定することができます。

Action

            "Action": "ec2:*",

ここには、名前の通り、Actionの設定を行います。 Actionに設定する値(ec2:*の部分)は、「①:②」の構成になっております。 ①には、サービス名が入ります。 EC2の場合ec2、RDSの場合rds、IAMの場合iam、とサービスごとに決まっています。

②にはサービスごとのアクションを設定します。 どんなアクションを記載できるかは、以下のドキュメントを参照ください。 全てのアクションを許可する場合は、上記のように「*」を使います。

Amazon EC2 のアクション、リソース、および条件キー - サービス認証リファレンス

ドキュメントの見方としては、以下画像の赤枠で閲覧したいサービスを選択します。 そして、中間あたりに緑枠のようにアクションの一覧が載っているため、そこを参照します。

f:id:swx-fukushima:20210718123557p:plain

また、各サービスページの上部には、以下のように①に設定するプレフィックスが記載されています。

f:id:swx-fukushima:20210718130759p:plain

Resource

Actionで設定した操作を適用できるリソース(範囲)を設定することができます。

            "Resource": "*"

リソースに設定できる値は、設定できるアクションが載っているページと同じページ(以下のURL)に記載があります。 Actionによっては、リソース(範囲)を絞ることができないこともあるため、注意が必要です。

Amazon EC2 のアクション、リソース、および条件キー - サービス認証リファレンス

f:id:swx-fukushima:20210718131144p:plain

Condition

Conditionは、条件を絞りたい場合に設定します。(任意の値のため、設定しなくても問題ないです。) 例えば、今回の場合、123456789123というAWSアカウントのfk-iam-user(IAMユーザー)のみがEC2のフルアクセス権限を持ちます。 そのため、fk-iam-user以外にポリシーを割り当てても、EC2のフルアクセス権限は与えられません。

            "Condition": {
                "StringEquals": {
                    "aws:PrincipalArn": "arn:aws:iam::123456789123:user/fk-iam-user" 
            }

Conditionに設定できる値は、複数あるため、詳細は以下を参考にしてください。

IAM JSON ポリシーの要素: Condition - AWS Identity and Access Management

終わりに

今回は、IAMポリシー(JSON)の見方をご説明しました。 どなたかのお役に立てれば、幸いです。

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。

AWS資格12冠。2023 Japan AWS Partner Ambassador/APN ALL AWS Certifications Engineer。