Upload
amazon-web-services-japan
View
8.272
Download
3
Embed Size (px)
Citation preview
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
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 問い合わせ」で検索索してください
82
公式TwitterFacebookAWSの最新情報をお届けします
awscloud_jp検索索
最新技術情報イベント情報お役立立ち情報お得なキャンペーン情報などを日々更更新しています
もしくはhttponfbme1vR8yWm
83
AWSの導入お問い合わせのご相談bull AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales
「AWSemsp 問い合わせ」で検索索してください
83
AWSの導入お問い合わせのご相談bull AWSクラウド導入に関するご質問お見見積り資料料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttpsawsamazoncomjpcontact-‐‑‒usaws-‐‑‒sales
「AWSemsp 問い合わせ」で検索索してください