#author("2023-10-15T12:14:00+09:00","default:irrp","irrp")
#author("2023-10-15T12:14:28+09:00","default:irrp","irrp")
→AWS IAM関連

#contents


*IAMポリシー [#c0b14f1d]
-メモ(2023.1)
--1つのIAMグループに対して管理ポリシーやインラインポリシーはそれぞれ最大10までしか付与できない。
--10以上の管理ポリシーを付与したい場合は、複数のIAMグループを作り、それらのグループにポリシーを分散して付与した上で、ユーザを両方のグループに所属させるとよい。
--このような使い方を踏まえ、IAMグループは単なる「ユーザの組織単位での集まり」としてよりも付与するポリシーの分類を意識したグルーピングにした方が良さそう。

-[[IAM ユーザーに対して AWS コンソールへ一時的なアクセスを制御する方法について | DevelopersIO>https://dev.classmethod.jp/articles/tsnote-iamuser-datetime-accesstemporarily/]] 2023.2

-[[管理者権限を与えつつIAMユーザーまわりの操作だけ禁止するIAMポリシー | DevelopersIO>https://dev.classmethod.jp/articles/not-iam-user-operation/]] 2021

-[[IAM ユーザーが所属している IAM グループとアタッチされている IAM ポリシーの一覧を AWS CLI で取得する | DevelopersIO>https://dev.classmethod.jp/articles/iam-user-inventory-aws-cli/]] 2022.11

-[[【更新】AWSにおけるアクセスポリシーの評価ロジック - サーバーワークスエンジニアブログ>https://blog.serverworks.co.jp/iam/policy/evaluation-logic/2021-update]] 2022.6

-[[誤って削除したIAM PolicyをAWS Configを使って復元してみた | DevelopersIO>https://dev.classmethod.jp/articles/the-way-to-restore-iam-policy/]] 2022.3

-ポリシータイプ…参照:[[IAM でのポリシーとアクセス許可 - AWS Identity and Access Management>https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html]] 2022.4
--アイデンティティベースのポリシー…ユーザーやロールなどのアイデンティティにアタッチするポリシー。管理ポリシーとインラインポリシーがある。
--リソースベースのポリシー…インラインポリシーをリソースにアタッチするポリシー。
--セッションポリシー…AWS CLI または AWS API を使用してロールまたはフェデレーティッドユーザーを引き受ける場合に使うポリシー
--アクセス許可の境界…アイデンティティベースのポリシーが IAM エンティティに付与できるアクセス許可の上限
--サービスコントロールポリシー(SCP)…組織または組織単位 (OU) のメンバーアカウントのアクセス許可の上限
--アクセスコントロールリスト(ACL)…ACL がアタッチされているリソースにアクセスすることができる他のアカウントのプリンシパルを制御。クロスアカウントのアクセス許可
--※分類軸がぐちゃぐちゃでわかりづらいが、本当にポリシーのタイプという感じなのは最初の3つで、あとの3つは上限値と他アカの制御

-[[今日のハンズオンで出てきた、アクセス制御境界(Permission Boundary)とインラインポリシーの関係について整理してみました>https://twitter.com/tcsh/status/1522107952936620032]] 2022.5
--縦方向はAND、横方向はORの関係にあるので、アクセス制御境界とインラインポリシーの両方で明示的な許可がないと拒否されます。
--&ref(AWS IAM関連/policy.png);

-[[JSON ポリシー>https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html#access_policies-json]] 2022.4
--Version – 使用するポリシー言語のバージョン。2012-10-17
--Statement – このポリシーのメイン要素であり、以下の要素のコンテナになります。ポリシーには、複数のステートメントを含めることができます。
--Sid (オプション) – 複数のステートメントを区別するための任意のステートメント ID が含まれます。
--Effect – Allow / Deny
--Principal (一部の状況でのみ必須) 
---リソースベースのポリシーを作成する場合は、アクセスを許可または拒否するアカウント、ユーザー、ロール、またはフェデレーティッドユーザーを指定する必要があります。
---ユーザーまたはロールにアタッチする IAM アクセス許可ポリシーを作成する場合は、この要素を含めることはできません。プリンシパルは、そのユーザーまたはロールを暗黙に示しています。
--Action – ポリシーで許可または拒否するアクションのリストが含まれます。(Resource 一部の状況でのみ必須) 
---IAM アクセス許可ポリシーを作成する場合は、アクションが適用されるリソースのリストを指定する必要があります。
---リソースベースのポリシーを作成する場合は、この要素はオプションです。この要素を含めない場合、アクションが適用されるリソースは、ポリシーがアタッチされているリソースです。
--Condition (オプション) ポリシーでアクセス許可を付与する状況を指定します。


*ポリシーの種類/アイデンティティベースかリソースベースか [#m0af7038]
*アイデンティティポリシー/リソースベースポリシー [#m0af7038]
-IAMポリシーは何を対象にアタッチするポリシーかで2つに分かれる
--アイデンティティベースポリシー…ユーザ/グループ/ロールにアタッチするポリシー
--リソースベースポリシー…リソースとは主にAWSの個々のサービス(例えばS3)を指す
---[[S3のアクセスコントロールまとめ - Qiita>https://qiita.com/ryo0301/items/791c0a666feeea0a704c]] 2014

-アイデンティティベースポリシーはスタンドアロンかどうかで別れ、さらにスタンドアロンポリシーは管理主体によって2つに分かれる
--スタンドアロンポリシー(管理ポリシー)
---AWS管理ポリシー
---カスタマー管理ポリシー
--インラインポリシー
--[[管理ポリシーとインラインポリシー - AWS Identity and Access Management>https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html]] 2022.4
--[[[AWS]管理ポリシーとインラインポリシーの違いが分からなかったので改めてIAMポリシーのお勉強をする - Qiita>https://qiita.com/Batchi/items/a2dde3d2df27568cc078]] 2017

-リソースベースポリシーはインラインポリシーしかない
-リソースベースのポリシーとして最も一般的な例
--Amazon S3 バケットポリシー
--IAM ロールの信頼ポリシー
---[[信頼ポリシーにおいてスイッチロールできるIAMユーザーを複数指定する方法 | DevelopersIO>https://dev.classmethod.jp/articles/how-to-trust-iam-users-that-can-switch-role/]] 2022.6


**リソースベースポリシー [#mf4f17ba]
-[[リソースベースポリシーをサポートしないAWSリソースのクロスアカウント設定と、Go による実装 - freee Developers Hub>https://developers.freee.co.jp/entry/aws-cross-account-with-assumerole]] 2023.10
-[[リソースベースポリシーの Principal に存在しないプリンシパルを指定すると Invalid principal in policy などのエラーが発生する | DevelopersIO>https://dev.classmethod.jp/articles/resource-base-policy-invalid-principal-error/]] 2022.12


*Cedar/Amazon Verified Permission [#g2b10751]
-[[AWSが公開したオープンソースのポリシー記述言語Cedarを紹介 | Think IT(シンクイット)>https://thinkit.co.jp/article/22436]] 2023.10

-[[Cedar(Amazon Verified Permissionsのポリシーのための言語)のチュートリアルを読んだ - s1r-Jの技術ブログ>https://s1r-j.hatenablog.com/entry/2023/07/15/004820]] 2023.10
--Amazon Verified PermissionsとはAWSが提供するアクセス管理サービス(認可エンジンとも)です。 ざっくり言うと、アプリケーションでの操作を許可するか拒否するかを評価してくれます。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS