今日のAWS
terraform ちょっとだけ触りました
resource "aws_s3_bucket", "woshidan-terrafom-test" { # 追加する種類のリソース, リソース名 # s3の場合 bucket = "woshidan-terrafom-test" path = "/" acl = "private" # acl = "..." で設定しているのはAWS側によってあらかじめ定義された既定ACL # privateはデフォルト設定。所有者はすべての権限を持つが他のユーザにアクセス許可はない # http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/acl-overview.html#canned-acl # 既定ACLに付け加えて記載するポリシー. JSON形式で書く policy = << POLICY { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "aws-portal:View*", "Resource": "*" } ] } POLICY }
AWS S3のACL
http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/acl-overview.html
AWS S3 アクセスコントロールリスト(ACL)では、バケットとオブジェクトへのアクセスを管理ができる。各バケットとオブジェクトにはサブリソースとしてACLが付与されていて、ACLには
- 所有者
- 被付与者(AWSアカウントまたはグループ)
- 付与されたアクセス許可
の要素がある。
PolicyとPolicy Attachment
Policyのリソース( aws_iam_policy
)は別個に定義することができて、下記のようにさらにAttachmentリソースの定義でユーザーやグループと結びつけることで、管理画面でやるようにユーザーが所属するグループの食い合わせによってそのユーザーが持っている権限が定義される、というような管理の仕方ができそう。
resource "aws_iam_policy" "WoshidanTerraformTestFullAccess" { name = "WoshidanTerraformTestFullAccess" path = "/" description = "terraform hello world" policy = <<POLICY { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:List*", "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:DeleteObject*", "s3:PutObject*" ], "Resource": [ "arn:aws:s3:::woshidan-terrafom-test/*" ] } ] } POLICY }
resource "aws_iam_policy_attachment" "WoshidanTerraformTestFullAccess" { name = "WoshidanTerraformTestFullAccess" users = [...] roles = [] policy_arn = "${aws_iam_policy.WoshidanTerraformTestFullAccess.arn}" }