JAWS DAYS 2017 Deep Dive IAM 権限をこえて 〜第二部 policyたち〜

Preview:

Citation preview

DeepDive IAM権限をこえて

第二部 Policyたち2017/03/11

自己紹介 IAM 権限を超えて ~第二部 Policyたち~

・名前大竹 孝昌(おおたけ たかまさ)

・所属NECソリューションイノベータ株式会社

・経歴NECのftサーバやCLUSTERPROシリーズの製品開発を経て、現在はCLUSTERPROを活用した高可用システムの導入支援やコンサルティング、ソリューション開発に従事。

・JAWS-UGSecurity-JAWS コアメンバー

IAM Policyとは IAM 権限を超えて ~第二部 Policyたち~

{"Version": "2012-10-17","Statement": [

{"Effect": "Allow","Action": "*","Resource": "*"

}]

}

『とりあえずこれでいいんでしょ?』

『そんなPolicy、修正してやる!』

IAM Policyとは IAM 権限を超えて ~第二部 Policyたち~

ポリシーとは『所定の書式に従って、1 つ以上のアクセス許可を記述したドキュメント(抜粋※)』

※AWS Documentation » AWS Identity and Access Management » IAM » アクセス管理 » IAM ポリシーの概要

http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html

・JSON形式・IAM Policy言語

{"Version": "2012-10-17","Statement": [

{"Effect": "Allow","Action": "*","Resource": "*"

}]

}

IAM Policyの種類 IAM 権限を超えて ~第二部 Policyたち~

※AWS Documentation » AWS Identity and Access Management » IAM » アクセス管理 » IAM ポリシーの概要 » 管理ポリシーとインラインポリシー

http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_managed-vs-inline.html

IAMポリシー

管理ポリシー

インラインポリシー

AWS管理ポリシー

カスタマー管理ポリシー

AWS アカウント内の複数のユーザー、グループ、およびロールにアタッチできスタンドアロンポリシー⇒ ユーザー、グループ、およびロールにのみ適用

自身で作成および管理するポリシー⇒ 単一のユーザー、グループ、またはロールに直接埋め込んで適用

AWS が作成および管理する管理ポリシー

AWS アカウントで作成および管理する管理ポリシー

『ポリシーを初めて利用する場合は、AWS 管理ポリシーから開始することをお勧めします。(抜粋※)』

『AWS 管理ポリシーに比べ、より正確にポリシーを管理できます。(抜粋※)』

IAM Policyの種類 IAM 権限を超えて ~第二部 Policyたち~

AWS管理ポリシー

AWSアイコンあり(AWSが作成&管理)

IAM Policyの種類 IAM 権限を超えて ~第二部 Policyたち~

カスタマー管理ポリシー

AWSアイコンなし(ユーザが作成&管理)

IAM Policyの種類 IAM 権限を超えて ~第二部 Policyたち~

AWS管理ポリシー(職務機能ポリシー)

特定の職務機能を持つ人によるタスクの実行に必要な権限を簡単に付与することがでる

・多くのサービスの権限を一つのポリシーに統合しているため、権限が様々なポリシーに分散している場合に比べて扱いやすい・AWSによって保守や更新が行われているため、新しいサービスが出たときの対応コストが小さい

※AWS Documentation » AWS Identity and Access Management » IAM » アクセス管理 » IAM ポリシーの概要 » 管理ポリシーとインラインポリシー» 職務機能の AWS 管理ポリシー http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_job-functions.html

IAM Policyの種類 IAM 権限を超えて ~第二部 Policyたち~

管理ポリシー

インラインポリシー

{"Version":"2012-10-17","Id":"UseCase3","Statement" : [

{"Sid":"1", "Effect":"Allow","Principal" : {

"AWS": "111122223333"},"Action":["sqs:SendMessage","sqs:ReceiveMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2","Condition" : {

"DateLessThan" : {"AWS:CurrentTime":"2009-06-30T12:00Z"

},"IpAddress" : {

"AWS:SourceIp":"10.52.176.0/24"}

}}

]}

IAM Policy言語の文法 IAM 権限を超えて ~第二部 Policyたち~

SQSのサンプルポリシー(抜粋:Amazon EC2 インスタンスからのリクエストに許可を与える)

http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html

※AWS Documentation » AWS Identity and Access Management » IAM » AWS Identity and Access Management のリファレンス情報 » AWS IAM ポリシーの参照» IAM ポリシー言語の文法 http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_grammar.html

←①

←②

←③policy = {

<version_block?> ← ①<id_block?> ← ②<statement_block> ← ③

}

JSON形式

IAM Policy言語

{"Version":"2012-10-17","Id":"UseCase3","Statement" : [{

"Sid":"1", "Effect":"Allow","Principal" : {

"AWS": "111122223333"},"Action":["sqs:SendMessage","sqs:ReceiveMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2","Condition" : {

"DateLessThan" : {"AWS:CurrentTime":"2009-06-30T12:00Z"

},"IpAddress" : {

"AWS:SourceIp":"10.52.176.0/24"}

}}

]}

IAM Policy言語の文法 IAM 権限を超えて ~第二部 Policyたち~

※AWS Documentation » AWS Identity and Access Management » IAM » AWS Identity and Access Management のリファレンス情報 » AWS IAM ポリシーの参照» IAM ポリシーエレメントの参照 http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements.html

IAM Policy Element

← 固定値 (2008-10-17 or 2012-10-17)

← 任意の識別子 (使用方法はサービスに依存)

← IAM Policyはここからが本番

← 任意の識別子 (ポリシー内で固有の値)

← 固定値 (Allow or Deny)

← アクセス許可/拒否するIAMユーザやAWSアカウントなど

← 許可/拒否するサービスのアクション(API)

← Amazonリソースネーム(ARN)

← 条件指定(AND/ORなど)

Amazon Resource Name IAM 権限を超えて ~第二部 Policyたち~

※AWS Documentation » AWS General Reference » Amazon リソースネーム (ARN) と AWS サービスの名前空間

http://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-arns-and-namespaces.html

arn:aws:service:region:account:resource

AWSのサービス名

対象リソースのリージョン(IAMリソースの場合、空白)

対象リソースのパス(形式はサービス依存)

AWSアカウントID(ハイフンなし)

:resourcetype/resource:resourcetype:resource

arn:aws:ec2:us-east-1:123456789012:dedicated-host/h-12345678arn:aws:ec2:us-east-1::image/ami-1a2b3c4darn:aws:ec2:us-east-1:123456789012:instance/*arn:aws:ec2:us-east-1:123456789012:volume/vol-1a2b3c4d

例)Amazon EC2

← ワイルドカード(使い方はサービス依存)

arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecordsarn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords:1.0arn:aws:lambda:us-east-1:123456789012:event-source-mappings:kinesis-stream-arn

例)AWS Lambda

← 各サービスの構文を確認できる

AWSリソースを一意に識別

{"Version":"2012-10-17","Id":"UseCase3","Statement" : [{

"Sid":"1", "Effect":"Allow","Principal" : {

"AWS": "111122223333"},"Action":["sqs:SendMessage","sqs:ReceiveMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2","Condition" : {

"DateLessThan" : {"AWS:CurrentTime":"2009-06-30T12:00Z"

},"IpAddress" : {

"AWS:SourceIp":"10.52.176.0/24"}

}}

]}

IAM Policy言語の文法 IAM 権限を超えて ~第二部 Policyたち~

※AWS Documentation » AWS Identity and Access Management » IAM » AWS Identity and Access Management のリファレンス情報 » AWS IAM ポリシーの参照» IAM ポリシー変数の概要 http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_variables.html

IAM Policy Element

Action Recource*

サービス依存

Principal*

Effect

Condition*

サービス非依存

* ポリシー変数利用可能

IAM Policy言語の文法 IAM 権限を超えて ~第二部 Policyたち~

※ AWS Documentation » AWS Identity and Access Management » IAM » AWS Identity and Access Management のリファレンス情報 » AWS IAM ポリシーの参照» IAM ポリシーで使用できる AWS サービスアクションと条件コンテキストキー

http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_actionsconditions.html» IAM ポリシーで使用できる AWS サービスアクションと条件コンテキストキー » Amazon EC2 のアクションと条件コンテキストキー

http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/list_ec2.html

Action Recource*

サービス依存

Principal*

Effect

Condition*

サービス非依存* ポリシー変数利用可能

IAM ポリシーで使用できる AWS サービスアクションと条件コンテキストキー※・Amazon API Gateway・Amazon CloudFront・Amazon CloudWatch・Amazon EC2・Amazon Kinesis

・・・

サービスに依存した条件キー

Amazon EC2 のアクションと条件コンテキストキー※

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可

Amazon EC2 User Guide

IAM User Guide

IAM Policy言語の文法 IAM 権限を超えて ~第二部 Policyたち~

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可※

Amazon EC2 User Guide

Action Recource

サービス依存

Condition

サービスに依存した条件キー(Amazon EC2)

※ AWS Documentation » Amazon EC2 » User Guide for Linux Instances » ネットワークとセキュリティ » Amazon EC2 のリソースに対するアクセスの制御» Amazon EC2 の IAM ポリシー » Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可

http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-supported-iam-actions-resources.html

マイPolicyは『ちょい足し』から IAM 権限を超えて ~第二部 Policyたち~

{"Version": "2012-10-17","Statement": [{

"Effect": "Allow","Action": "ec2:Describe*","Resource": "*"

},{

},{

省略},{

"Effect": "Allow","Action": "autoscaling:Describe*","Resource": "*"

}]

}

AmazonEC2ReadOnlyAccess + Tokyoリージョン限定で起動/停止

"Effect": "Allow","Action": [

"ec2:StartInstances","ec2:StopInstances"

],"Resource": [

"arn:aws:ec2:ap-northeast-1:111122223333:instance/*"]

Tokyoリージョン限定で起動/停止"Effect": "Allow","Action": [

"ec2:StartInstances","ec2:StopInstances"

],"Resource": "*","Condition": {

"StringEquals": {"ec2:Region": "ap-northeast-1"

}}

or

※AWS Documentation » AWS Identity and Access Management » IAM » AWS Identity and Access Management のリファレンス情報 » AWS IAM ポリシーの参照» IAM ポリシーエレメントの参照 - 条件 http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements.html#Condition

【条件演算子】※

・文字列・数値・日付/時刻・ブール (True/False)

・バイナリ (Base64)

・IPアドレス (IPv4/IPv6)

・ARN (特定サービスのみ)・…IfExists(別のチェックの一部として

キー値が存在するか確認)

・Null check

IAM Policy Simulator IAM 権限を超えて ~第二部 Policyたち~

※ AWS Documentation » AWS Identity and Access Management » IAM » アクセス管理 » IAM ポリシーの概要» IAMPolicy Simulator を使用した IAM ポリシーのテスト http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_testing-policies.html

The Way of the IAM Policy Master IAM 権限を超えて ~第二部 Policyたち~

※ AWS Documentation » AWS Identity and Access Management » IAM » アクセス管理 » IAM ポリシーの概要 » AWS リソースの管理に関するポリシーの例

http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_examples.html

・IAM Policyはユーザーガイドがバイブル(個人的な見解)→ ポリシー例※ が豊富なので活用しよう

・まずはIAM Policyニンジャを目指すもヨシ→ AWS re:Invent 2016: Become an AWS IAM Policy Ninja in 60 Minutes or Less

http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-become-an-aws-iam-policy-ninja-in-60-minutes-or-less-sac303

『まだだ、まだ終わらんよ!』第三部へ続く