私のスペック
大学卒からアパレル関係の営業を6年経験後現在のSESに転職して1年ほど。
気づいたらAWSの勉強をしており、資格11冠目指したいとも思ってます。
その前にAWSエンジニアとして仕事をしたい為、更なる知識の深める際にIAMに詰まった。
SAAは合格済み
なぜ書こうと思ったか
色々振り返ってみたらよくわかったいなかったことが多かったので
改めて復習のつもりで書く事にした。
IAMポリシーについて
IAMアイデンティティやAWSリソースに関連付ける事によってアクセス許可を定義することができる
以下のようにJSONで定義されたポリシーをアタッチされた IAM ユーザーにのみ、このアクセス許可が付与される
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "dynamodb:*",
"Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/Books"
}
}
// us-east-2 リージョン内の 123456789012 アカウントの Books テーブルに対してすべての Amazon DynamoDB アクション (dynamodb:) を実行することをユーザーに許可
ポリシーのタイプについて
ポリシーにも種類が存在しており
●アイデンティティベースのポリシー
・管理ポリシー(AWS管理ポリシー・カスタマー管理ポリシー)
・インラインポリシー
●リソースベースのポリシー
・IAMロールの信頼ポリシー、S3のバケットポリシー、SNSトピックのアクセス許可、SQSキューのアクセス許可
●パーミッションバウンダリー
・IAMアクセス許可の境界、Organizationsサービスコントロールポリシー(SCP)
●アクセスコントロールポリシー(ACL)
・S3バケットのACL、VPCのサブネットのACL
●セッションポリシー
アイデンティティベースのポリシー
ユーザー・グループ・ロールに関連付ける
アクセス許可の境界としてアイデンティテベースポリシーの両方で許可されているものが有効となる
●管理ポリシーはAWS管理ポリシーとカスタム管理ポリシーと2つある
「ポリシー」として取り外しができ1つの管理ポリシーを多くのエンティティにアタッチできる1対多の関係
①AWS管理ポリシー
・AWSにより事前定義され管理されたポリシー。
・編集不可でAWSにより更新される。
②カスタマー管理ポリシー
・AWSアカウントで管理できるカスタムポリシー
・AWS管理ポリシーでは要件を満たせない場合に使用する
AWS管理ポリシーはあくまでざっくりと定義されているポリシーという感じ。
(例)EC2全てに対して全ての操作を許可するなど。
より細かくしたい場合などにカスタマー管理ポリシーで細かい権限を与える。
AWS管理ポリシーとカスタム管理ポリシーを複数アタッチすることも可能(最大10)
●インラインポリシー
「ポリシー」として単体で存在することができず、1つのインラインポリシーに対して
1つのエンティティに埋め込む形となり1体1の関係となる。
付与されたエンティティが削除されるとインラインポリシーも削除される
AWSではインラインポリシーではカスタマー管理ポリシーを使用することを推奨している。
終わりに
ポリシーはインラインポリシーではなくAWS管理ポリシーを使用するようにとAWSから推奨されてはいるが
場合によってはインラインポリシーを使う場合もあるらしい。