🎴

AWS ポリシーの種類を認識しました

に公開

AWSのポリシーの種類を認識したので、メモしておきます。

ポリシー

AWSのリソースへのアクセスや操作を制御するルールのこと。**「誰が、どのリソースに、どんな条件で、どんな操作ができるか」**を細かく設定できる。
例えば、特定リソースに特定IPからのアクセスしかできないようにしたり、特定のユーザーしかアクセスできないようにしたりするときに使います。
アクセス制御系でよく聞くもので言うとIAM(Identity and Access Management)とかがあると思うのですが、IAMユーザーに付与する具体的なルール設定の部分がポリシーです。

ポリシーの分類として、アイデンティティポリシーとリソースベースポリシーがあります↓↓。

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

アイデンティティ (ユーザー、ユーザーグループ、ロール) に付与するもの。アイデンティティ (ユーザー、ユーザーグループ、ロール)が、実行できるアクション/リソース/条件を制御します。

  • AWS managed policy
    • AWSが用意してくれているポリシー。AWSが大まかに作成してくれている、出来合いのポリシー。
    • そのまま使えるので、楽です。
    • AWS managed policiesのリスト
      • 例: AmazonECS_FullAccess -> ECSのこと全部できる
  • custom policy
    • 自作するポリシー。細かい制御までできます。
    特定IPからのアクセス許可
    {
         "Version": "2012-10-17",
         "Statement": {
             "Effect": "ALLOW",
             "Action": "*", // 全許可は実運用では良くない
             "Resource": "*", // 全許可は実運用では良くない
             "Condition": {
                 "IpAddress": {
                     "aws:SourceIp": [
                         "192.0.x.x/24",
                     ]
                 }
             }
         }
     }
    
  • inline policy
    • 単一アイデンティティに直接設定するポリシー
    • アイデンティティが消えるタイミングでポリシーも消える。儚い。再利用するものではない。
    • 逆に再利用できないので、特定の1つのポリシーを特定のアイデンティティにだけ設定したい場合は向いている。

リソースベースポリシー

リソース(s3,ecs,opensearchなど)に対して実行できるアクション/リソース/条件を制御します。

  • リソースベースのポリシーはinline policyのみです。AWS managed policyはない。
  • リソースベースポリシーは再利用する想定があんまりないからかと思われます。(多分)
  • クロスアカウントアクセス(別のAWSアカウントからのアクセス)も設定可能
  • 書き方は同じ
特定のユーザーからのアクセス許可
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::xxxxxxxxxxx:user/cinnamon-user-xxxx"
        },
        "Action": "es:*",
        "Resource": "arn:aws:es:us-east-1:831926594566:domain/cinnamon-staging/*"
      }
    ]
  }

まとめ

  • ポリシーにも分類あり

参考

Discussion