AWSのPolicyを書く

2019-10-17AWS

AWSが用意しているポリシーだと余分なのあるしカスタムしたい。
などの場合に自分でポリシーをカスタムできます。
以下の例は、S3の指定バケットの特定ユーザーへの読み取り専用アクセス許可のポリシーになります。

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}

よく使う部分を抜粋して、簡単に要素の説明を記載します。

Effect

許可または拒否なのかを指定します。
以下例は許可を指定しています。

"Effect":"Allow"

Principal

AWSアカウント、IAMユーザー、IAMロールや、サービスを指定します。
以下例はIAMユーザーを指定しています。

"Principal": {
  "AWS": [
    "arn:aws:iam::AWS-account-ID:user/user-name-1", 
    "arn:aws:iam::AWS-account-ID:user/UserName2"
  ]
}

Action

許可または拒否するアクションを指定します。
以下例は自分のパスワードを変更することができるアクションを指定しています。

"Action": "iam:ChangePassword"

Resource

一連のオブジェクトを指定します。
以下例は特定の Amazon S3 バケット内のすべての項目指定しています。

"Resource": "arn:aws:s3:::my_corporate_bucket/*"

Condition

ポリシーを実行するタイミングの条件を指定します。
以下例はユーザーネームが"jon"のユーザに一致するかどうかを指定しています。

"Condition" : { "StringEquals" : { "aws:username" : "jon" }}

上記以外にNotPrincipal、NotAcition、NotResourceや、
Conditionの条件式にも「StringNotEquals」なども存在するので必要に応じて使えば色々な条件で指定することができます。

公式ページにポリシーのリファレンスがあるため、参照してみてください。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements.html

2019-10-17AWS

Posted by 上地健太