0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「~ベースのIAMポリシー」の「ベース」って何?

Posted at

AWSのIAMポリシーについて、「~ベースのポリシー」といったりしますが、何があってその中ではどういう記載が必要なんだっけ?と迷うことがあったので、基本中の基本を考え直してみました。

アイデンティティベースのポリシー

{
 "Version": "2012-10-17",
 "Statement": {
   "Sid": "1",
   "Effect": "Allow",
   "Action": "s3:ListBucket",
   "Resource": "arn:aws:s3:::example_bucket"
 }
}

リソースベースのポリシー

{
 "Version": "2012-10-17",
 "Statement": {
   "Sid": "1",
   "Effect": "Allow",
   "Principal": {"AWS": ["arn:aws:iam::account-id:root"]},
   "Action": "s3:*",
 }
}

アイデンティティベースにはPrincipalがなくてResourceがある、リソースベースにはPrincipalがありResourceがないという違いがあります。

Principal

「Principal」は日本語で「主な」「主要な」といった意味があります。IAMポリシーにおいて、Principalはアクションを実行する主体を指します。

アイデンティティベースのポリシーはIAMユーザーやIAMロールにアタッチされるため、ポリシー自体には主体=PrincipalであるIAMユーザーやロールの記載が不要なのです。

逆にリソースベースのポリシーは、リソース側の視点から、この主体=Principalにアクションできるようにしてほしい/ほしくないという指示を出すため、Principalの記載が必要となります。

Resource

Resourceについても同様の考え方ができます。

アイデンティティベースのポリシーは、IAMユーザーやロールの視点から、このリソースに対してアクションできるようにしてほしい/ほしくないという指示を出すため、Resourceの記載が必要です。

逆にリソースベースのポリシーは、S3バケットなどのリソースにアタッチされるため、ポリシー自体にはResourceの記載が不要なのです。
ただ、明示的に対象リソースを指定することもよくあります。

まとめ

「~ベース」というのは、アタッチする対象を指しており、ポリシーのアクションが誰の立場から行われるものなのかを表現したものなんですね。
改めて整理できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?