日々学んだことを残しておこう。きっと未来の自分が探しにくる。 (ただ忘れっぽいだけです…)

AWS IAM Access Policy Language ポリシーをカスタマイズしてみる


AWS IAMユーザ設定を行う際に一番気になったところは、アクセス権限をセットするAccess Policy Languageをカスタマイズするところだと思う。

Select Policy Templateでテンプレートが用意してあります。
・Administrator Access(AWSサービスとリソースにフルアクセス付与)
・Power User Access(ユーザ、グループ管理以外のAWSサービスとリソースにフルアクセス付与)
・Read Only Access(AWSサービスとリソースのリードのみ)
等々

いろいろテンプレートは用意してくれていますが、例えば、あるグループは、S3のこのバケットだけアクセス権限与えるとか権限にカスタマイズがしたいなと。

Policy Generatorというのを使うとAWS ServiceとActionsを指定してなんかカスタマイズできそうだ。
でも、結構重要そうな内容なので、勉強してみる。

ほぼ週刊AWSマイスターシリーズIAM編

Access Policy LanguageはJSONフォーマットで記述する必要がある。

13日の金曜日 PART4 完結篇 [DVD]
ジェーソン。。。
真剣に調べている方に申し訳ないですけど、どうでも良い画像を差し込んでしまいました。
戻ります。


まず、どんな感じか確認するために、テンプレートの最初の3つを見て雰囲気チェック。

Administrator Accessの場合
{
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}


Power User Accessの場合
{
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}


Read Only Accessの場合
{
"Statement": [
{
"Action": [
"autoscaling:Describe*",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackEvents",
"cloudformation:DescribeStackResources",
"cloudformation:GetTemplate",
"cloudfront:Get*",
"cloudfront:List*",
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"directconnect:Describe*",
"dynamodb:GetItem",
"dynamodb:BatchGetItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:DescribeTable",
"dynamodb:ListTables",
"ec2:Describe*",
"elasticache:Describe*",
"elasticbeanstalk:Check*",
"elasticbeanstalk:Describe*",
"elasticbeanstalk:List*",
"elasticbeanstalk:RequestEnvironmentInfo",
"elasticbeanstalk:RetrieveEnvironmentInfo",
"elasticloadbalancing:Describe*",
"iam:List*",
"iam:Get*",
"route53:Get*",
"route53:List*",
"rds:Describe*",
"s3:Get*",
"s3:List*",
"sdb:GetAttributes",
"sdb:List*",
"sdb:Select*",
"ses:Get*",
"ses:List*",
"sns:Get*",
"sns:List*",
"sqs:GetQueueAttributes",
"sqs:ListQueues",
"sqs:ReceiveMessage",
"storagegateway:List*",
"storagegateway:Describe*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}



といった感じ。

ちょっと大事そうなところメモ。
Effectには、[Allow](許可)と[Deny](拒否)が用意されている。
Actionには、対象となる操作を指定(ワイルドカード使用可能)
Resourceには、対象となるリソースを指定 AmazonResource Nameで記載(ワイルドカード使用可能)
アクセス制御が有効になる条件をConditionに記述し、構文は、直列に記述とAND、並列に記述するとORになる。


アクセス可否の決定ロジックは以下の通り
■アクセス制御の条件は複数設定可能
・ユーザー・グループごとに条件が設定できるため、相反する条件の設定も可能
■すべてのアクセスはデフォルトで拒否(デフォルトDeny)
・アクセス権限に"Allow"の条件があった場合、アクセス許可
・ただしアクセス権限に1つでも"Deny"の条件があった場合、アクセス拒否(明示的なDeny)
・デフォルトDeny < Allow < 明示的なDeny


グループでAllowしても、ユーザで明示的にDenyするとDenyってことか。
なるほどね。

早速S3の設定していたらつまづいたけど、参考サイトに解決に役立つ情報あったので、メモしておこっと。
hogehogeバケット以下の全オブジェクトへアクセス許可の場合、bucketそのものに対するアクセスと、bucket配下のオブジェクトに対するアクセス両方を指定する必要があるため、以下のように記述する必要があるとのこと。
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [ "arn:aws:s3:::hogehoge", "arn:aws:s3:::hogehoge/*" ]
}
]
}



S3のAmazon Resource Name (ARN)の記述の仕方もまだちょっと抵抗あるな~
Amazon EC2 には Amazon Resource Name(ARN)はないんだね。

う~ん、難しい。要修行だー。

(参考サイト)
IAMポリシーでのarnの記法について(S3特定バケット内へのアクセスを許可する方法)
IAMのAccess Policy Languageをいじる(1)
関連記事

2013-02-26 : AWS : コメント : 0 : トラックバック : 0
Pagetop
コメントの投稿
非公開コメント

Pagetop
« next  ホーム  prev »

広告

読みたいと思っている書籍

Amazon Web Services クラウドネイティブ・アプリケーション開発技法 一番大切な知識と技術が身につく Amazon Web Services 定番業務システム12パターン 設計ガイド イラストで学ぶ 機械学習 最小二乗法による識別モデル学習を中心に (KS情報科学専門書) イラストで学ぶ ディープラーニング (KS情報科学専門書)

カウンタ

メールフォーム

名前:
メール:
件名:
本文:

GoogleTranslate

管理人のつぶやき

人気記事ランキング

カテゴリ

openclose

ブログ内検索

全記事表示リンク

全ての記事を表示する

ブログパーツ