83
1 AWS Black Belt Online SeminarAWS Identity and Access Management (AWS IAM) アマゾンウェブサービスジャパン株式会社 プロフェッショナルサービス本部 智 2016.09.21

AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

Embed Size (px)

Citation preview

Page 1: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

113

【AWS13 Black13 Belt13 Online13 Seminar】13  AWS Identity and Access Management

(AWS IAM)13

アマゾンウェブサービスジャパン株式会社プロフェッショナルサービス本部 高田 智己20160921

213

  本資料料では2016年年9月21日時点のサービス内容および価格についてご説明しています最新の情報はAWS公式ウェブサイト(httpawsamazoncom)にてご確認ください

  資料料作成には十分注意しておりますが資料料内の価格とAWS公式ウェブサイト記載の価格に相違があった場合AWS公式ウェブサイトの価格を優先とさせていただきます

内容についての注意点

AWS does not offer binding price quotes AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at httpawsamazoncomagreement Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided Monthly charges will be based on your actual use of AWS services and may vary from the estimates provided

  価格は税抜表記となっています日本居住者のお客様が東京リージョンを使用する場合別途消費税をご請求させていただきます

3

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

4

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

5

AWS Identity and Access Management (IAM)

bull  AWS操作をよりセキュアに行行うための認証認可の仕組み

bull  AWS利利用者の認証とアクセスポリシーを管理理sect  AWS操作のためのグループユーザーロールの作成が可能sect  グループユーザーごとに実行行出来る操作を規定できるsect  ユーザーごとに認証情報の設定が可能

開発チーム 運用チーム

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 2: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

213

  本資料料では2016年年9月21日時点のサービス内容および価格についてご説明しています最新の情報はAWS公式ウェブサイト(httpawsamazoncom)にてご確認ください

  資料料作成には十分注意しておりますが資料料内の価格とAWS公式ウェブサイト記載の価格に相違があった場合AWS公式ウェブサイトの価格を優先とさせていただきます

内容についての注意点

AWS does not offer binding price quotes AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at httpawsamazoncomagreement Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided Monthly charges will be based on your actual use of AWS services and may vary from the estimates provided

  価格は税抜表記となっています日本居住者のお客様が東京リージョンを使用する場合別途消費税をご請求させていただきます

3

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

4

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

5

AWS Identity and Access Management (IAM)

bull  AWS操作をよりセキュアに行行うための認証認可の仕組み

bull  AWS利利用者の認証とアクセスポリシーを管理理sect  AWS操作のためのグループユーザーロールの作成が可能sect  グループユーザーごとに実行行出来る操作を規定できるsect  ユーザーごとに認証情報の設定が可能

開発チーム 運用チーム

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 3: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

3

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

4

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

5

AWS Identity and Access Management (IAM)

bull  AWS操作をよりセキュアに行行うための認証認可の仕組み

bull  AWS利利用者の認証とアクセスポリシーを管理理sect  AWS操作のためのグループユーザーロールの作成が可能sect  グループユーザーごとに実行行出来る操作を規定できるsect  ユーザーごとに認証情報の設定が可能

開発チーム 運用チーム

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 4: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

4

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

5

AWS Identity and Access Management (IAM)

bull  AWS操作をよりセキュアに行行うための認証認可の仕組み

bull  AWS利利用者の認証とアクセスポリシーを管理理sect  AWS操作のためのグループユーザーロールの作成が可能sect  グループユーザーごとに実行行出来る操作を規定できるsect  ユーザーごとに認証情報の設定が可能

開発チーム 運用チーム

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 5: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

5

AWS Identity and Access Management (IAM)

bull  AWS操作をよりセキュアに行行うための認証認可の仕組み

bull  AWS利利用者の認証とアクセスポリシーを管理理sect  AWS操作のためのグループユーザーロールの作成が可能sect  グループユーザーごとに実行行出来る操作を規定できるsect  ユーザーごとに認証情報の設定が可能

開発チーム 運用チーム

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 6: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

6

IAM動作イメージ APIやマネジメントコンソールからのアクセスに対して権限をチェック

全操作可能

S3はすべて操作可能

S3参照だけ

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 7: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

7

AWSアカウント(root)ユーザーbull  AWSアカウント作成時のID

bull  アカウントの全ての AWS サービスとリソースへの完全なアクセス権限を持つ

bull  アカウントの作成に使用したメールアドレスとパスワードでサインイン

bull  日常的なタスクにはそれが管理理者タスクであってもroot ユーザーを使用しないことを強く推奨

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 8: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

8

AWSのroot権限が必要な操作の例例以下の操作にはAWSのルート権限が必要となります(2016年年9月現在)

bull  AWS ルートアカウントのメールアドレスやパスワードの変更更bull  IAMユーザーの課金金情報へのアクセスに関するactivatedeactivatebull  他のAWSアカウントへのRoute53のドメイン登録の移行行bull  CloudFrontのキーペアの作成bull  AWSサービス(サポート等)のキャンセルbull  AWSアカウントの停止bull  コンソリデイテッドビリングの設定bull  脆弱性診断フォームの提出bull  逆引きDNS申請

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 9: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

9

IAMユーザーbull  AWS操作用のユーザー

ndash  1AWSアカウントで5000ユーザーまで作成可能

bull  ユーザーごとに設定可能な情報ndash  ユーザー名

bull  IAMユーザーの識識別とマネジメントコンソールへのログインに使用bull  64文字までのアルファベット数字+=-‐‑‒_

ndash  パス(オプション)bull  ユーザーにオプションとしてセットできる情報bull  パスを元にユーザーの検索索が可能bull  組織階層やプロジェクトなどをセット emsp 例例)awssa bull  512文字までのBasic Latin文字(アルファベット数字$amp()=~sim|-‐‑‒^`[]+_)

bull  開始と終了了がであることndash  所属グループ

bull  10のグループまで設定可能ndash  パーミッション

bull  AWSサービスへのアクセス権限bull  JSON形式でポリシーを記述

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 10: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

10

IAMグループbull  IAMユーザーをまとめるグループ

ndash  1AWSアカウントで100グループまで作成可能

bull  グループに設定可能な情報ndash  グループ名

bull  グループの識識別に使用最大128文字ndash  パス(オプション)

bull  組織階層などをセット emsp 例例)aws ndash  パーミッション

bull  グループに設定したパーミッションはIAMユーザーに付与したパーミッションと同時に評価bull  評価方法は後述

Group

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 11: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

11

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 12: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

12

IAMで使用する認証情報bull  アクセスキーIDシークレットアクセスキー

ndash  RESTQuery形式のAPI利利用時の認証に使用ndash  2つまで生成可能ndash  ActiveInactiveの切切り替えndash  情報の置き場には注意

bull  GitHUBbull  AMIの中への埋め込みbull  ワード文書等に記述bull  非暗号化メールの中に記述bull  コードの中への直接書き込み

ndash  AWS 認証情報ファイルndash  環境変数

bull  X509 Certificatendash  SOAP形式のAPIリクエスト用ndash  OpenSSLなどで証明書を作りアップロード

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 13: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

13

IAMで使用する認証情報bull  AWSマネジメントコンソールへのログインパスワード

ndash  デフォルトは未設定(ログインできない)ndash  128文字までのBasic Latin文字ndash  パスワード変更更時のポリシー設定が可能

bull  AWSアカウントごとに設定bull  最低パスワード長大文字小文字等

bull  MFA(多要素認証)ndash  ハードウェアMFA仮想MFASMS MFAより選択ndash  ハードウェアMFA

bull  Gemalto社からAWS用のデバイスを購入ndash  Tokenタイプndash  カードタイプ(2016年年9月現在利利用できません)

ndash  仮想MFAbull  スマートフォンやPCにインストールbull  Google AuthenticatorなどTOTP実装のソフトが利利用可能

ndash  SMS MFA(プレビュー)bull  モバイルデバイスのSMSを利利用

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 14: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

14

強度度の強いパスワードポリシーの利利用  AWSの管理理コンソールにログインするために必要となるIAMユーザーのパスワードには以下のようなパスワードポリシーを持たせることが可能

bull  パスワードの最小文字数bull  大文字英字の要求bull  小文字英字の要求bull  数字を含めることの要求bull  特殊文字の要求bull  ユーザー自身によるパスワード変更更の許可bull  パスワードの有効期限の設定bull  パスワードの再利利用の制限bull  パスワードが期限切切れになった場合管理理者によるリセットの有無 AWSルートアカウントには適用されないことに注意

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 15: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

15

AWSルートアカウントは極力力利利用しないsect  AWSルートアカウントはIAMで設定するアクセスポリシーが適用されない強力力なアカウント

sect  十分に強度度の強いパスワードを設定した上通常は極力力利利用しないような運用を

sect  Security CredentialのページからAccess Keyの削除(ただしAccess Keyを使用していないか確認が必要)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 16: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

16

MFAによるアカウントの保護sect  多要素認証(MFA)によるなりすましの防止sect  AWSルートアカウントはMFAで保護し通常利利用しない運用にsect  2016年年9月現在カード型のハードウェアMFAは利利用できません

ハードウェア ソフトウェア(認証情報コピー不不可)

ソフトウェア(認証情報コピー可能) SMS(プレビュー)

製品 Gemalto Google Authenticator Authy NA

形式 トークン型(カード型) スマホアプリ スマホアプリ モバイルデバイスのSMS

コスト 有料料(2000円程度度) 無料料 無料料 SMS料料金金データ料料金金

保管 持ち歩くことも可能だし金金庫などに厳重に保管も可能

常に持ち歩く 常に持ち歩く 常に持ち歩く

交換 紛失故障時は再登録交換時のために予備の準備が必要

紛失機種変更更時は再登録 機種交換時に認証情報を引き継げる

同じ電話番号を持つ新しいモバイルフォンを取得する場合支障なし

ルートアカウント

サポート サポート サポート サポートしていない

IAMユーザー

サポート サポート サポート サポート

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 17: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

17

認証情報の定期的なローテーションsect  IAMユーザーのパスワードやAccess Key

Secret Access Keyは定期的にローテーションすることを推奨

sect  認証情報の利利用状況はIAMのCredential Report機能で確認可能sect  ユーザーの作成日時sect  最後にパスワードが使われた日時sect  最後にパスワードが変更更された日時sect  MFAを利利用しているかsect  Access KeyがActiveかsect  Access Keyのローテートした日時sect  Access Keyを最後に使用した日時sect  Access Keyを最後に利利用したAWSサービスsect  証明書はActiveかsect  証明書のローテートした日時

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 18: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

18

bull  パスワードやアクセスキーのローテーションなど認証情報ライフサイクルの要件の結果を監査可能

bull  認証情報レポートはカンマ区切切り値(CSV)ファイルとしてダウンロード可能

bull  使用していない認証情報は削除

IAM認証情報レポート(Credential Report)

Credential Report

httpsblogsawsamazoncomsecuritypostTx1GZCHQC7LR3UTNew-‐‑‒in-‐‑‒IAM-‐‑‒Quickly-‐‑‒Identify-‐‑‒When-‐‑‒an-‐‑‒Access-‐‑‒Key-‐‑‒Was-‐‑‒Last-‐‑‒Used

レポートは4時間毎に一回生成可能

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 19: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

19

IAMユーザーのパスワードローテーション

bull  IAMのパスワードポリシーでユーザーがパスワードを変更更できるように設定

bull  パスワードに有効期限を設けることで利利用者が自分で定期的にパスワードをローテーションできるようにする

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 20: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

20

アクセスキーのローテーションsect  IAMユーザーの「認証情報」の「アクセス

キー」から「アクセスキーの管理理」を選択sect  「アクセスキーの作成」で新しい認証情報の

作成(2つまで)

sect  新しい認証情報でテストを行行い古いAccess KeyはInactiveにする

sect  万が一問題が起きた時は再びActivateすることが可能

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_RotatingCredentialshtml

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 21: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

21

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 22: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

22

IAMポリシーbull  AWSアクセスに対する権限設定bull  JSON形式のアクセスポリシー言語でアクセス条件を記述

ndash  httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicy-‐‑‒referencehtml

Statement Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo] ]

このブロックを1条件としてアクセス権限をチェック

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 23: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

23

管理理ポリシーとインラインポリシー2015年年より従来からのインラインポリシーに加え管理理ポリシーがIAMポリシーの分類として追加管理理ポリシーは独立立したポリシーであり複数のユーザーやグループ等にアタッチして利利用することが可能

分類 詳細管理理ポリシーAWS アカウント内の複数のユーザーグループおよびロールに最大10個までアタッチできるスタンドアロンポリシー5世代まで変更更を保管できロールバックも可能

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

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

インラインポリシー従来のIAMポリシーと同じ内容

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

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 24: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

24

AWS管理理ポリシーAWS管理理ポリシーはAWSが作成および管理理するスタンドアロンポリシー一般的なユースケースに基づいたAWS管理理ポリシーが用意されており利利用者は事前に定義されたAWS管理理ポリシーを選択して利利用することが可能

bull  管理理者用(すべてのアクセス)パワーユーザー用(IAMを除くすべてのアクセス)および AWSサービスへのその他のさまざまなレベルアクセス用の一般的なアクセス権限を定義

bull  新しいAWSサービスがリリースされたり既存のサービスで新しいAPI が利利用できるようになったりポリシーに新しいサービスまたはAPI のアクセス権限を含める必要が発生した場合にAWS管理理ポリシーが対応

bull  事前定義されているものなので1つのAWS 管理理ポリシーを複数のAWSアカウントのIAMエンティティにまた1つのAWSアカウントの複数のIAMエンティティにアタッチ可能

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

User John

User Mike

AWS管理理ポリシー

GroupAdmins Policy

AdministratorAccess

Policy PowerUserAccess

Policy AWSCloudTrailRead

OnlyAccess

AWSアカウント1 AWSアカウント2

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 25: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

25

カスタマー管理理ポリシーカスタマー管理理ポリシーは自身のAWSアカウントで管理理できるスタンドアロンポリシーAWSアカウントの複数のIAMエンティティにカスタマー管理理ポリシーをアタッチすることが可能

bull 利利用者がカスタム可能な管理理ポリシー

bull 同じポリシーを複数のIAMエンティティにアタッチできる

bull 用意されているポリシーでは要件を満たせない場合等にカスタマー管理理ポリシーを適用

User Dave

Role EC2-‐‑‒App

User Susan

User Alice

GroupAdmins

AWSアカウントカスタマー管理理ポリシー

Policy Account-‐‑‒admins

Policy Limited-‐‑‒admins

Policy EC2-‐‑‒access

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 26: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

26

インラインポリシーインラインポリシーは1つのIAMエンティティ(ユーザーグループまたはロール)に埋め込まれたポリシーIAMエンティティの一部でありIAMエンティティの作成時またはそれ以降降にポリシーを作成してIAMエンティティに埋め込まれる

bull ユーザーグループまたはロールの一部

bull 一つのポリシーを共有することはできない

bull ポリシーの変更更に関して該当するインラインポリシー全てを個々に変更更する必要がある

Role EC2-‐‑‒App

User Susan User Alice

Group Admins

AWSアカウントインラインポリシー

Policy Account-‐‑‒admins

Policy EC2-‐‑‒access Policy Dynamo-‐‑‒access

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 27: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

27

管理理ポリシーの使い分け

httpdocsawsamazoncomja_jpIAMlatestUserGuidepolicies-‐‑‒managed-‐‑‒vs-‐‑‒inlinehtml

bull  管理理ポリシーのメリットbull  再利利用性bull  変更更管理理の一元化bull  バージョニングとロールバックbull  AWS管理理ポリシーの自動更更新

bull  管理理ポリシーの制限bull  AWS アカウントあたりのカスタマー管理理ポリシー数 1000bull  管理理ポリシーあたりのバージョン数 5bull  IAM のユーザーグループロールごとにアタッチされる管理理ポリシー数 10

bull  管理理ポリシーに関する留留意点bull  管理理ポリシーの制限が問題となるケースbull  意図しないIAMエンティティに管理理ポリシーが誤ってアタッチされるリスクを許容できないケース

bull  AWS管理理ポリシーに関してはAWSによる変更更が問題となるケース

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 28: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

28

管理理ポリシーの使用例例(アクセス権限管理理の委任)

httpawstypepadcomsajp201504how-‐‑‒to-‐‑‒create-‐‑‒a-‐‑‒limited-‐‑‒iam-‐‑‒administrator-‐‑‒by-‐‑‒using-‐‑‒managed-‐‑‒policieshtml

AWS Account

カスタマー管理理ポリシー AWS管理理ポリシー

制限付きIAM管理理者

開発者 DynamoDBへのFull Access権限

S3の特定バケットへの権限

IAMのRead Only権限

限定されたIAMの運用権限

特定の管理理ポリシーのアタッチやデタッチ

IAMユーザーの作成削除等

bull  ユーザーの作成や削除等IAMの運用管理理の一部を委任する場合

bull  ベースラインになるIAMのRead Only権限は事前定義されているAWS管理理ポリシーを利利用

bull  委譲したい特定業務はカスタマー管理理ポリシーを作成

bull  どの管理理ポリシーを操作できるといった細かいアクセスコントロールも可能

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 29: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

29

アクセス条件の記述 Effect Allow Action [ s3ListBuckets s3Get ] Resource [ arnawss3mybucket ] Condition IpAddress awsSourceIP [ldquo17632924932ldquo]

Effect許可の設定ならrdquoAllowrdquo拒否の設定ならrdquoDenyrdquo

Action対象となるAWS操作を指定emsp 

Resource対象となるAWSリソースを指定

Conditionこのアクセス制御が有効になる条件の設定

この例例の場合「アクセス元IPが176329249だったらS3のListBucketsとGet系の操作を許可する」という意味

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 30: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

30

Actionbull  「Action」は操作自体に対する設定

sect  ec2runInstancessect  ec2AttachVolumesect  s3CreateBucketsect  s3DeleteObject

sect  ワイルドカード指定可能sect  例例)ec2Describe

sect  指定の操作以外の場合は「NotAction」を使用sect  例例)ldquoNotActionrdquo ldquoiamrdquo (IAMの操作以外を許可する)

Action [ s3ListBuckets s3Get ]

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 31: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

31

Resourcebull  「Resource」は操作対象を指定する設定

sect  EC2インスタンスsect  EBSボリュームsect  S3バケットsect  S3オブジェクト

bull  ARN(Amazon Resource Name)で記述sect  ldquoarnawsrdquoで始まる文字列列sect  arnawsserviceregionaccountresourcesect  例例) arnawss3mybucket

bull  指定リソース以外の場合は「NotResource」を使用ndash  例例) ldquoNotResourcerdquo ldquoarnawss3hogerdquo

Resource [ arnawss3mybucket ]

httpdocsawsamazoncomja_jpgenerallatestgraws-‐‑‒arns-‐‑‒and-‐‑‒namespaceshtml

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 32: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

32

Condition

bull  Resourceに対するActionを許可(もしくは拒否)するかどうかの条件設定

bull  ポリシー変数(条件キー)に対して演算子を用いて条件を指定

Condition IpAddress awsSourceIP ldquo17632924932ldquo

演算子 ポリシー変数 条件値

httpdocsawsamazoncomja_jpIAMlatestUserGuideAccessPolicyLanguage_ElementDescriptionshtmlCondition

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 33: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

33

ポリシー変数bull  全てのリクエストで利利用できるキー

Condition IpAddress emsp emsp emsp awsSourceIP emsp emsp emsp emsp ldquo17632924932ldquo

例例えばAPI呼び出しコンソール利利用を指定のIPアドレスだけに絞りたい場合に利利用

注)コンソールに関してはログインはできても操作する権限がないという状態になります

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_variableshtml

ポリシー変数 用途

awsCurrentTime 日時の確認

awsEpochTime エポック (UNIX) 時間で表した日付

awsTokenIssueTime 一時的認証情報が発行行された日付

awsMultiFactorAuthPresent MFAの確認

awsMultiFactorAuthAge MFA認証済み認証が発行行された時間

awsprincipaltype プリンシパルタイプの確認

awsReferer クライアントブラウザーの確認

awsSecureTransport SSLによるリクエストの確認

awsSourceIp 接続元IPの確認

awsSourceArn ソースのARNの確認

awsSourceVpc ソースのVPCの確認

awsUserAgent クライアントアプリケーション

awsuserid ユーザーID

awsusername ユーザー名

ポリシー変数 用途

s3prefix Prefixの確認

snsProtocol 配信プロトコルの確認

ec2ResourceTagtag名 タグ名の確認

bull  AWSサービス固有のキーの例例

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 34: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

34

Conditionの演算子bull  文字列列

ndash  完全一致部分一致など

bull  数値ndash  一致以上以下など

bull  日付および時間ndash  一致日付の後先など

bull  Booleanbull  バイナリbull  IP アドレス

ndash  指定のアドレス指定範囲など

bull  Amazon リソース名ndash  完全一致部分一致など

bull  IfExistsndash  上記演算子に付与変数がない場合無視

bull  条件キーの有無

Condition StringEquals emsp emsp emsp ec2ResourceTagstack

ldquoprod

Condition ldquostreq emsp emsp emsp ec2ResourceTagstack

ldquoprod

httpsdocsawsamazoncomja_jpIAMlatestUserGuidereference_policies_elementshtmlCondition

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 35: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

35

複数ConditionのrdquoORrdquoとrdquoANDrdquo

bull  Condition下のブロックはAND演算子に対する値はORbull  この例例の場合「2013716の1200から1500の間にソースIP192168176024もしくは192168143024のネットワークからアクセスしたリクエスト」を意味する

Condition DateGreaterThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T120000Z DateLessThan awsCurrentTime 2013-‐‑‒07-‐‑‒16T150000Z IpAddress awsSourceIp [192168176024192168143024] OR

AND

AND

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 36: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

36

ユーザーのStatementユーザーのStatement

アクセス可否の決定ロジックbull  アクセス制御の条件は複数設定可能

ndash  ユーザーグループごとに複数相反する条件の設定も可能

bull  すべてのアクセスはデフォルトで拒否(デフォルトDeny)ndash  アクセス権限にldquoAllowrdquoの条件があった場合アクセス許可ndash  ただしアクセス権限に1つでもldquoDenyrdquoの条件があった場合アクセス拒否(明示的なDeny)ndash  デフォルトDeny lt Allow lt 明示的なDeny

グループのStatementAllow

該当なし(デフォルトDeny)

結果Allow

Allow

結果Deny

グループのStatementDeny

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 37: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

37

IAMと連携するAWSサービス連携のカテゴリ 内容アクションレベルのアクセス許可 ポリシーのAction エレメントでの個別のアクションの指定をサポート

リソースレベルのアクセス許可 ポリシーのResource要素での個別のリソースの指定 (ARN を使用) をサ

ポートする 1 つ以上の APIがある

リソースベースのアクセス許可

IAM ユーザーグループロールに加えてサービスのリソースにもポリシーをアタッチ可能

タグベースのアクセス許可 Condition エレメントのリソースタグのテストをサポート

一時的なセキュリティ認証のサポート

ユーザーは AssumeRole または GetFederationToken などの AWS STS API を呼び出して取得した一時的なセキュリティ認証情報を使用してリクエストを作成

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 38: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

38

IAMと連携するAWSサービス

httpdocsawsamazoncomja_jpIAMlatestUserGuideUsing_SpecificProductshtml

サービスおよび関連する IAM 情報

次のアクセス権限をサポートします

アクションレベル リソースレベル リソースベース タグベース 一時認証情報

Amazon Elastic Compute Cloud(Amazon EC2)

Yes Yessup1 No はいsup1 Yes

Amazon EC2 Container Service (Amazon ECS)

Yes Yessup2 No No Yes

Auto Scaling Yes No No No Yes

Elastic Load Balancing Yes Yessup3 No No Yes

AWS Lambda Yes Yes⁴ Yes No Yes

サポートされるアクセス権限のカテゴリは各AWSサービスによって異異なるためドキュメントにて最新の状況を確認するようにして下さい

コンピューティングサービスの例例(2016年年9月現在)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 39: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

39

IAMと連携するAWSサービス

httpsdocsawsamazoncomja_jpAWSEC2latestUserGuideec2-‐‑‒supported-‐‑‒iam-‐‑‒actions-‐‑‒resourceshtml

リソースレベルやタグベースのアクセス許可は各AWSサービスのアクションによりサポート状況が異異なるためドキュメントでの確認を行行ってください

Amazon EC2 API アクションでサポートされるリソースレベルのアクセス許可の例例(2016年年9月現在)

Stopinstanceがサポートするリソースと条件キー

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 40: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

40

ユーザーベースとリソースベースbull  ポリシーはユーザーやグループ以外にリソースにも紐紐付け可能bull  S3バケットSQSのキューなどに対してポリシーが適用可能

ndash  「特定のIPアドレスからしかアクセスできないバケット」などの設定が可能

ユーザーベース リソースベース

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 41: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

41

リソースベースのポリシーによるクロスアカウントアクセス

bull  AWSアカウントを超したアクセス許可ndash  S3SQSSNSなどで利利用可能

Statement EffectAllow Principal ldquoAWSrdquoldquoarnawsiamAccount Bの番号root Actions3 Resourcearnawss3mybucket

1Account Aのバケットに以下のポリシーを設定

2Account Bにmybucketへアクセス権限付与

Principalは実行行をしているユーザーに対する条件設定

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 42: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

42

IAMポリシーの作成を支援するツール群bull  AWS Policy Generatorhttpawspolicygens3amazonawscompolicygenhtml

ndash  AWSのサービスについて必要情報を入力力するとポリシー文書を自動作成してくれるツール

bull  ポリシー言語の文法チェック機能ndash  ポリシー保管時にポリシー言語の文法チェック自動フォーマットを実施ndash  「Validate Policy」により明示的な確認が可能

bull  IAM Policy Validatorndash  自動的に既存の IAMポリシーを調べIAMポリシーの文法に準拠しているか確認ndash  ポリシーに対する推奨の変更更を提示ndash  Policy Validator を使用できるのは準拠していないポリシーがある場合のみ

bull  IAM Policy Simulatorhttpspolicysimawsamazoncomhomeindexjspndash  プロダクションへの実装前にポリシーをテスト可能ndash  パーミッションのトラブルシューティングndash  Conditionポリシー変数リソースベースのポリシーを入れたテスト

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 43: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

43

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  Federationbull  まとめ

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 44: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

44

記録される情報には以下のようなものが含まれる

bull  APIを呼び出した身元(Who)

bull  APIを呼び出した時間(When)

bull  API呼び出し元のSource IP(Where)

bull  呼び出されたAPI(What)

bull  APIの対象となるAWSリソース(What)

bull  管理理コンソールへのログインの成功失敗(rootアカウントの失敗は2016年年9月現在未サポート)

AWS CloudTrailはAWSアカウントで利利用されたAPI Callを記録しS3上にログを保存するサービスAWSのリソースにどのような操作が加えられたか記録に残す機能であり全リージョンでの有効化を推奨適切切なユーザーが与えられた権限で環境を操作しているかの確認と記録に使用

ユーザーのアクティビティの記録

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 45: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

45

Access AdvisorとService Last Accessed Databull  IAM エンティティ (ユーザーグループロール) が最後に AWS サービスにアクセス

した日付と時刻を表示する機能

bull  IAMの最小限の特権に関する設定に利利用ndash  IAM ポリシー内で未使用または最近使用されていないアクセス許可を識識別ndash  未使用のサービスに関するアクセス許可を削除したり類似の使用パターンを持つユーザーをグループに再編成ndash  アカウントのセキュリティを改善

Service Last Accessed Dataは下記のリージョンでは2016年年9月現在提供されていませんbull 中国(北北京) (cn-‐‑‒north-‐‑‒1)bull AWS GovCloud (US) (region-‐‑‒gov-‐‑‒us-‐‑‒west-‐‑‒1)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 46: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

46

Service Last Accessed Dataの利利用例例bull  ユーザーやグループロールに与えられた権限で利利用されていないものを発見見

bull  IAMポリシーの利利用状況と利利用しているエンティティの識識別

IAMポリシーを利利用しているのが誰で最後にアクセスしたのがいつか容易易に識識別可能

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 47: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

47

bull  ユーザーの作成日時bull  最後にパスワードが使われた日時bull  最後にパスワードが変更更された日時bull  MFAを利利用しているかbull  Access KeyがActiveか

IAM認証情報レポート(Credential Report)bull  Access Keyのローテートした日時bull  Access Keyを最後に使用した日時bull  Access Keyを最後に利利用したAWSサービスbull  証明書はActiveかbull  証明書のローテートした日時

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 48: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

48

AWS ConfigのIAMサポート

The image cannot be displayed Your computer may not have enough memory to open the image or the image may have been corrupted Restart your computer and then open the file again If the red x still appears you may have to delete the image and then insert it again

bull  IAMのUserGroupRolePolicyに関して変更更履履歴構成変更更を管理理確認することが可能

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 49: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

49

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 50: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

50

IAMロールとはbull  AWSサービスやアプリケーション等エンティティに対してAWS操作権限を付与するための仕組み

ndash  例例えば実行行するアプリケーションにロールを付与する事でそのアプリケーションからAWSを操作出来るようになる

bull  IAMユーザーやグループには紐紐付かない

bull  設定項目はロール名とIAMポリシー

bull  EC2ほかBeanstalkData Pipelineなどでも利利用

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 51: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

51

EC2にはIAMロールを利利用EC2のようなAWSサービスに対してAWS操作権限を付与するための仕組みIAMユーザーの認証情報のようなものをOSアプリケーション側に持たせる必要がなく認証情報の漏漏えいリスクを低減可能IAMロールによる認証情報はAWSが自動的にローテーション

プログラム

メタデータ

IAMロール利利用

プログラム

IAMユーザー利利用認証情報をEC2内に持たせる認証情報の保管ローテーション等の検討が必要

IAMロールによる権限はEC2上に恒久的に保管されるものではなくテンポラリローテーション等は自動で行行われる

IAMロール利利用の利利点bull  EC2上のアクセスキーの管理理が容易易bull  認証情報はSTS(Security Token Service)で生成bull  自動的に認証情報のローテーションが行行われるbull  EC2上のアプリケーションに最低権限を与えることに適している

bull  AWS SDK及びAWS CLIのサポートbull  IAMユーザーの認証情報を外部に漏漏えいしてしまうリスクを低減させる

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒resourcebasedpolicies-‐‑‒comparehtml

IAM Role

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 52: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

52

メタデータからの認証情報取得

curl http169254169254latestmeta-‐‑‒dataiamsecurity-‐‑‒credentialsEC2_Admin

Code Success LastUpdated 2016-‐‑‒09-‐‑‒18T051539Z Type AWS-‐‑‒HMAC AccessKeyId ASIAJY2YJ5S2ZYK25BLQ SecretAccessKey Kp1NblZ7mov4ln7GLu8dqvN5GztXXXXXXXXXXXXXX Token AQoDYXdzELPwEa0ANmvPx2CpTfOWjuPSMQ+XXXXXXXXXXXXXXXX Expiration Expiration 2016-‐‑‒09-‐‑‒18T112740Z

Role名

STSのセッショントークン有効期限

  IAM Roleを設定したEC2インスタンス内から取得

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 53: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

53

AWSCredentials credentials = emsp emsp emsp emsp new BasicAWSCredentials(ldquoアクセスキーrdquordquoシークレットキーIDrdquo)AmazonEC2 ec2 = new AmazonEC2Client(credentials)rdquoec2describeInstances()

bull  AWS SDKを利利用する場合認証情報取得と有効期限切切れ前の再取得を自動的に実施可能

  AWS CLIはIAM Roleに対応済みbull  httpawsamazoncomjpcli

AmazonEC2 ec2 = new AmazonEC2Client()rdquoec2describeInstances()

IAM Role利利用後

IAM Role適用のインスタンス上では認証情報の設定が不不要

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 54: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

54

AWS Security Token Service(STS)とは

bull  一時的に利利用するトークンを発行行するサービス

bull  動的にIAMユーザーを作成しポリシーを適用できる

bull  IAM Role for EC2はこのSTSを利利用

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 55: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

55

Temporary Security Credentialsとはbull  AWSに対する一時的な認証情報を作成する仕組み

ndash  期限付きの認証情報(認証チケット)

bull  ユーザーに対して以下の3つのキーを発行行sect  アクセスキー(ASIAJTNDEWXXXXXXX)sect  シークレットアクセスキー(HQUdrMFbMpOHJ3d+Y49SOXXXXXXX)sect  セッショントークン(AQoDYXdzEHQakAOAEHxwpfozF73gmp9vZDWDPkgFnzwSG

3ztBw9Z4IUslNNn503+3SeN0nwI3wcdLR8y8Ulv9cnksMrBGjRVrJl2xg+CRnI9nJ1tteHp6yso3sP0BVvnxLpNwyIUpHrcTHt+8v2P6Y9VX2zl8Hccy6La0r1GuiHb9NEwqt6VIgjPWCZzHXzX8XsUObKhMnAUkY2IdTMrNKXcqVk8VbC6BNTqWsMIIfQPz9fDjKK1ifAFmHVSWvUxio94n+ebXXpy1NuHnt5JEGV34VPLMsrpZ86b+eulKNE1suoQ8TM5E1O66rYwizkq6w+cJovUnMxg6ESASBvolsrEioLiP+SE7cX1i8gRrSG9KT59GYTlhTzStjjFroCAqZu4KYplGUMCDl1g0twrdXeymsu3GG70Qwu0wSi3WjkW8VPiajahJXCEgp6gIgXElwkrBO01H5Y9NNDEyQaq8ocOGBPVRu+DS9LMs9SHASXimnnVeIN+1FVkXXXXXXXXXXXXXXXXXXXXXXXX)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 56: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

56

IAMの権限階層

bull  許可されたサービスへのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

IAMユーザー

bull  許可されたサービスへの一時的なアクセスbull  管理理コンソールおよびAPIへのアクセス

Temporary Security Credentials IAM Roles

bull  全てのサービスへのアクセスbull  課金金設定へのアクセスbull  管理理コンソールおよびAPIへのアクセスbull  カスタマーサポートへのアクセス

AWSアカウント

ドアキー

ホテルキー

従業員バッジ

DO NOT US

E

after initial

set-‐‑‒up

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 57: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

57

認証情報を取得する方法

bull  Self-‐‑‒sessions (GetSessionToken)

bull  Federated sessions (GetFederationToken)

bull  Assumed-‐‑‒role sessions bull  AssumeRolebull  AssumeRoleWithWebIdentitybull  AssumeRoleWithSAML

Session

Access Key IdSecret Access Key

ExpirationSession Token

Temporary Security Credentials

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 58: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

58

認証情報取得のためのAPISTSで利利用できるAPI Action 概要

GetSessionToken 自身で利利用するIAMユーザーのtemporary security credentialsを取得するためのアクション

GetFederationToken 認証を受けたFederatedユーザーのtemporary security credentialsを取得するためのアクション

AssumeRole 既存のIAMユーザーの認証情報を用いてIAM Roleのtemporary security credentialsを取得するためのアクション

AssumeRoleWithWebIdentity AmazonやFacebookGoogleによる承認情報を使用してロールを引き受けtemporary security credentialsを取得するためのアクション

AssumeRoleWithSAML idPによる認証とSAMLのアサーションをAWSにポストすることでロールを引き受けtemporary security credentialsを取得するためのアクション

httpdocsawsamazoncomSTSlatestUsingSTSWelcomehtml

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 59: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

59

認証情報の有効期限

bull  トークンのタイプにより有効期限は様々[MinMaxDefault]bull  Self (Account) [15 min 60 min 60 min]bull  Self (IAM User) [15 min 36 hrs 12 hrs]bull  Federated [15 min 36 hrs 12 hrs]bull  Assumed-‐‑‒role [15 min 60 min 60 min]

bull  発行行したチケットは延長や期間短縮は出来ない

bull  即座にアクセス制御したい場合は発行行に使用したIAMユーザーやIAMロールの権限を変更更する

Session

Access Key IdSecret Access Key

ExpirationSession Token

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 60: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

60

AWS STS in all AWS regionsbull  STSのエンドポイントが全リージョンに拡張

bull  デフォルトではSTSはグローバルサービスとして利利用ndash  単一エンドポイントhttpsstsamazonawscom

bull  IAMのAccount Settingsより各リージョンでSTS機能をアクティベート可能

ndash  レイテンシーの低減ndash  冗長性の構築

bull  有効化したリージョンでのCloudTrailの使用を忘れない

httpdocsawsamazoncomja_jpSTSlatestUsingSTSsts-‐‑‒enableregionshtml

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 61: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

61

ユースケース IAMロールによるクロスアカウントアクセスbull  あるアカウントのユーザーに別のアカウントのIAMロールに紐紐づける機能bull  例例えば開発アカウントを使って本番環境のS3データを更更新するようなケースで利利用

httpdocsawsamazoncomja_jpIAMlatestUserGuideroles-‐‑‒walkthrough-‐‑‒crossaccthtml

開発アカウント用ロール

本番アカウント開発アカウント

AssumeRole

認証情報

開発者アカウント用ロールの権限でアクセス

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 62: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

62

本番アカウントAcct ID 111122223333

s3-‐‑‒role

Statement [ Effect Allow Action ldquos3 Resource ]

開発アカウントAcct ID 123456789012

開発者Aのアクセスキーによる認証

S3-‐‑‒roleを引き受け一時的なアクセスキーを取得

一時的なアクセスキーによるS3APIの呼び出し

Statement [ Effect Allow Action ldquostsAssumeRole Resource arnawsiam111122223333roles3-‐‑‒role ]

Statement [ EffectAllow PrincipalAWSarnawsiam123456789012root ActionstsAssumeRole ]

IAMロールによるクロスアカウントアクセスの動作

S3-‐‑‒roleを誰が引き受けられるか定義したポリシーをs3-‐‑‒roleに設定本番アカウントのs3-‐‑‒roleの引き受けを許可するポリシーを開発者Aに設定

開発者A(IAM User)

s3-‐‑‒roleに付与されているポリシー

STS

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 63: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

63

クロスアカウントアクセスのためのMFA保護bull  AWSアカウント間でのアクセスのためのMFA保護を追加する機能

bull  AWSマネージメントコンソールでroleを作成する際にRequire MFAのチェックボックスを選択することで設定可能

bull  MFA認証されたユーザーのみが認証情報を受けとることが可能にndash  AssumeRole ndash  GetSessionToken

Version 2012-‐‑‒10-‐‑‒17 Statement [ Effect Allow Principal AWS Parent-‐‑‒Account-‐‑‒ID Action stsAssumeRole Condition Null awsMultiFactorAuthAge false ]

httpdocsawsamazoncomIAMlatestUserGuideMFAProtectedAPIhtml

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 64: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

64

Switch Rolebull  IAMユーザーからクロスアカウントアクセス用IAMロールにコンソールから切切替が可能

ndash  必ずしも別アカウントである必要はなく同じアカウントでもOK

bull  必要な時のみIAMユーザーの権限を ldquo昇格rdquoさせるndash  IAMユーザーには読み取り権限のみを付与ndash  IAMロールには更更新権限を付与

httpsawsamazoncomblogsawsnew-‐‑‒cross-‐‑‒account-‐‑‒access-‐‑‒in-‐‑‒the-‐‑‒aws-‐‑‒management-‐‑‒console

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 65: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

65

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 66: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

66

Identity Federation(ID連携)とはbull  企業組織の認証機能とAWSの認証を紐紐づける機能

bull  例例えばLDAP認証したユーザーに対してS3のアクセス権をつけるといった連携が可能

bull  認証したユーザーごとにTemporary Security Credentials(一時的なアクセスキー)を発行行

bull  IAMはOpenID ConnectまたはSAML 20 (Security Assertion Markup Language 20) と互換性のある IdP をサポート

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 67: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

67

ユースケース SAML20ベースのFederationbull  SAML20を使用した IDフェデレーション

bull  組織内の全員についてIAMユーザーを作成しなくてもユーザーはAWSを利利用可能

bull  組織で生成した SAMLアサーションを認証レスポンスの一部として使用し一時的セキュリティ認証情報を取得

bull  ユーザーは一時的セキュリティ認証情報でAWSのリソースにアクセス

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 68: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

68

5

SAML20ベースのFederation動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS Resources

Client Application

Active Directory

Identity provider

4

AssumeRoleWithSAMLの呼び出し

2ユーザーの認証

S3 Bucket with Objects

Amazon DynamoDB

Amazon EC2

IdPに認証情報のリクエスト

1

認証応答の受け取り 3

APP認証情報を用いたAPIの呼び出し

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_samlhtml

一時的な認証情報の受け渡し

6

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 69: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

69

ユースケース SAML20によるSSO Federationbull  SAML 20互換IdPおよびIAMロールを使用した管理理コンソールへのフェデレーションアクセス

bull  AssumeRoleWithSAML APIを直接呼び出す代わりにAWS SSOエンドポイントを使用

bull  エンドポイントはユーザーの代わりにAPIを呼び出しURL を返すとそれによってユーザーのブラウザーがAWSマネジメントコンソールへ自動的にリダイレクト

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 70: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

70

SAMLによるConsole Federationの動作例例Enterprise (Identity Provider) AWS (Service Provider)

AWS SSO Endpoint

Browser Interface

Corporate identity store

Identity provider

1内部ポータルへのアクセスポータルはIdPとしても機能

2認証応答の受け取り

7ブラウザがAWS管理理コンソールへリダイレクト

3

新しいAWSのサインインエンドポイントに対してSAMLアサーションをポスト

4

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_enable-‐‑‒console-‐‑‒samlhtml

STS

5

6

エンドポイントが一時的な認証情報をリクエストしサインインURLを作成

サインイン URL をクライアントにリダイレクトとして送信

認証レスポンスの一部としてコンソールが使用される時間を制限する時間枠およびユーザーが認証情報を更更新する前にコンソールにアクセスできる最大時間 (最大12 時間) を指定することができます

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 71: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

71

ユースケース Console Federation(Sample -‐‑‒ httpawsamazoncomcode4001165270590826)

bull  既存のIdPによる管理理コンソールへのシングルサインオン

bull  STSより一時的な認証情報を取得するためのカスタムフェデレーションブローカーを利利用

bull  AssumeRole APIの利利用

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 72: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

72

Console Federationの動作例例Customer (IdP) AWS (Relying Party)

AWS Management Console

Browser Interface

Corporate directory

Federation proxy

1URLにアクセス

ADグループ

の提示3

2ユーザーの認

コンソールへのリダイレクト10

ログインURLの作成 9

4List RolesRequest

8Assume Role ResponseTemp Credentials

bull  Access Keybull  Secret Keybull  Session Token

7AssumeRole Request

ロールを選択できるcomboBoxの作成

6

Federation proxy

bull  AssumeRoleRequest()を利利用するためProxy上のIAMユーザーのクレデンシャルを利利用

bull  IAMユーザーの権限はListRolesとassume roleを行行えるものが必要

bull  Proxyはこのクレデンシャルをセキュアに保管する必要がある

5List RolesResponse

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 73: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

73

Console Federationのメリットbull  アカウント管理理が統合されリスクが低減する

bull  既存のユーザ情報をそのまま利利用

bull  既存の権限ベースでの管理理が可能

bull  既存と同様のポリシーの利利用が可能ndash  アカウントロックポリシーやパスワード管理理ポリシー

bull  入退社など一元的な管理理が可能

bull  イントラネットからのみアクセス可能なログイン画面

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 74: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

74

ユースケース Web Identity Federationbull  モバイルアプリから一時的なAWSセキュリティ認証情報を必要に

応じて動的にリクエスト

bull  認証を確認するサーバが不不要ndash  例例えばスマートフォンアプリとS3だけでシステムが作成可能

bull  現在GoogleFacebookAmazon(Login with Amazon) twitter Amazon Cognito及びOIDC準拠のIdPに対応

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 75: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

75

モバイルアプリへのAmazon Cognitoの使用例例

us-‐‑‒east-‐‑‒1

アプリケーションSecurity

Token Service

DynamoDB

OpenID Connect準拠の

IdP

2

4

STSの認証情報を用いてAWSサービスにアクセス

リダイレクトして認証の実施ID Tokenの取得

httpsdocsawsamazoncomja_jpIAMlatestUserGuideid_roles_providers_oidc_cognitohtml

3エンドユーザー 1

アプリケーションの利利用

CognitoCognito tokenを用いSTSより認証情報の取得

Developerʼrsquos AWS Account

5

ID TokenからCognito tokenの取得

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 76: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

76

FederationSSOを提供するパートナーソリューションhttpawsamazoncomjpiampartners

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 77: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

77

アジェンダbull  IAMの概要bull  IAMによる認証(Authentication)bull  IAMによる権限設定(Authorization)bull  IAMによる監査(Audit)bull  AWS Security Token ServiceとIAMロールbull  IAMによるFederationbull  まとめ

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 78: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

78

IAMのベストプラクティス1  AWS アカウント(ルート)のアクセスキーをロックする2  個々の IAM ユーザーを作成する3  IAM ユーザーへのアクセス許可を割り当てるためにグループを使います4  最小限の特権を認める5  ユーザーのために強度度の高いパスワードポリシーを設定する6  特権ユーザーに対してMFA を有効化する7  Amazon EC2 インスタンスで作動するアプリケーションに対しロールを使用する8  認証情報を共有するのではなくロールを使って委託する9  認証情報を定期的にローテーションする10  不不要な認証情報の削除11  追加セキュリティに対するポリシー条件を使用する12  AWS アカウントのアクティビティの監視13  IAM ベストプラクティスについてのビデオ説明

httpdocsawsamazoncomja_jpIAMlatestUserGuideIAMBestPracticeshtml

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 79: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

79

まとめbull  IAMを利利用することでよりセキュアにAWSサービスを利利用できます

ndash  権限を適切切に設定することでセキュリティが向上しオペレーションミスも低減できます

bull  STSをうまく利利用するとAWSサービスをアプリケーションやモバイルから直接扱えます

ndash  サーバコストの削減が可能

bull  IAM自体には利利用料料が必要ありませんndash  積極的に活用を

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 80: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

80

追加のリソースbull  IAMドキュメント群

ndash  httpawsamazoncomjpdocumentationiam

bull  IAMベストプラクティスndash  httpdocsawsamazoncomIAMlatestUserGuideIAMBestPracticeshtml

bull  AWS Security Blogndash  httpblogsawsamazoncomsecurity

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 81: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

81

オンラインセミナー資料料の配置場所bull  AWS クラウドサービス活用資料料集

ndash  httpawsamazoncomjpaws-‐‑‒jp-‐‑‒introduction

bull  AWS Solutions Architect ブログndash  最新の情報セミナー中のQampA等が掲載されていますndash  httpawstypepadcomsajp

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 82: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

82

公式TwitterFacebookAWSの最新情報をお届けします

awscloud_jp検索索

最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています

もしくはhttponfbme1vR8yWm

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください

Page 83: AWS Black Belt Online Seminar AWS Identity and Access Management (AWS IAM)

83

AWSの導入お問い合わせのご相談bull  AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales

「AWSemsp 問い合わせ」で検索索してください