IAM Policy

IAM Policy とは

IAM エンティティ (User、Group、Role) にアクセス権を与える AWS リソース。

IAM Policy には Identity Based Policy と Resource Based Policy の2種類がある。

Identity Based Policy は IAM エンティティに付与される。
Resource Based Policy は S3 などの AWS リソースに付与される。

f:id:lifeofgorilla:20210906194949p:plain
IAM Policy

Identity Based Policy

Identity Based Policy は Inline Policy と Managed Policy で設定できる。

Inline Policy は User、 Group、Role と1対1の関係にあり、他の Identity と共有することができない。
Identity を削除すると付随する Inline Policy も削除される。

Managed Policy は AWS Managed Policy と Customer Managed Policy の2種類ある。

AWS Managed Policy は AWS によって作成された Policy。
Customer Managed Policy は ユーザー自身によって作成された Policy。
Managed Policy は複数の Identity に付与できる。

f:id:lifeofgorilla:20210906200654p:plain
Identity Based Policy

Resourced Based Policy

Resourced Based Policy は JSON に Principal という項目を持ち、そのリソースを使用できる Principal を定義できる。
Resourced Based Policy は Role にも設定できる。
Role に設定された Resourced Based Policy を Trust Policyという。
クロスアカウントでどのアカウントが Role を引き受けることができるかを制限できる。

f:id:lifeofgorilla:20210906200944p:plain
Resourced Based Policy

なぜ必要か

IAM エンティティの権限を制限するため。
IAM エンティティは箱のようなもので、権限のコントロールの実態は IAM Policy にある。

いつ使われるか

IAM エンティティを作成するとき。

どうやって使われるか

JSON 形式で記述する。

  • Version
    • ポリシー言語のバージョン
  • Statement
    • Policy の内容を書くポリシーの主要エレメント
  • Sid (ステートメント ID)
    • 任意の識別子
  • Effect
    • ステートメントの結果を許可(Allow)または明示的な拒否(Deny)のどちらにするかを指定する
  • Action
    • 許可または拒否される特定のアクション
  • Resource
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Example",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "*"
        }
    ]
}