Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JAWS-UG CLI #27 LT ActiveDirectoryのユーザとパスワードでManagement Consoleにログインする

626 views

Published on

(そのうちわかりやすく書き直す予定)
JAWS-UG CLI #27 LT ActiveDirectoryのユーザとパスワードでManagement Consoleにログインする

Published in: Technology
  • Be the first to comment

JAWS-UG CLI #27 LT ActiveDirectoryのユーザとパスワードでManagement Consoleにログインする

  1. 1. JAWS-UG CLI #27 LT ActiveDirectoryのユーザとパスワードで Management Consoleにログインする 2015/08/31 Mon Nobuhiro Nakayama
  2. 2. 2 cat << EOF > me.json { “name” : “Nobuhiro Nakayama”, “company” : “UCHIDAYOKO CO., LTD.”, “favorite aws services” : [ “Directory Service”, “IAM”, “CLI” ], “twitter” : ”@domokun70cm”, “facebook” : ” nobuhiro.nakayama.12”, “certifications” : [ “AWS Certified Solutions Architect-Professional”, “AWS Certified SysOps Administrator-Associate”, “Microsoft Certified Solutions Expert Server Infrastructure / SharePoint”, “IPA Network Specialist”, “IPA Information Security Specialist” ] } EOF
  3. 3. はじめに • 質問 • IDとパスワードをいくつ管理してますか? 2015/8/31 3
  4. 4. パスワード管理の限界 • 無理! • 頻繁にパスワード忘れる • 使い回されるパスワード • 有効期限や複雑性の管理・・・ • 貧弱!貧弱ゥ!(セキュリティ的な意味で) 2015/8/31 4
  5. 5. 認証連携 2015/8/31 5
  6. 6. 認証連携の例 2015/8/31 6 IdP(Identity Provider) Ex) facebook RP(Relying Party) Ex) niconico ID/PASS Token Redirect / Token 認証 Tokenの検証・認可 (IdPを事前に信頼していることが前提) (ログイン成功) User
  7. 7. AWSでも同じことできるよ! 2015/8/31 7
  8. 8. 認証連携(ADFSと連携する場合の例) 2015/8/31 8 IdP(Identity Provider) →ADFS RP(Relying Party) →AWS ID/PASS Token Redirect / Token 認証Tokenの検証・認可 (ログイン成功) User
  9. 9. Identity Provider (IAM) • AWS外のIdentity Providerを認証に利用することができる機能 • SAMLとOpen ID Connectによる認証連携をサポート • IAMで(たぶん)一番利用されないやつ 2015/8/31 9
  10. 10. Active Directory Federation Service(ADFS) • Active Directoryを構成する役割のひとつ • Domain Controllerとは異なる役割 • 組織外のRPとの認証連携などが可能 • Domain Controllerは組織内での認証で利用 • Kerberos認証など • (補足)次期Windows ServerのADFSではOpen ID Connectがサポートされる • [AD FS]OpenID Connectに対応した次期AD FSを試す • http://idmlab.eidentity.jp/2015/08/ad-fsopenid-connectad-fs.html 2015/8/31 10
  11. 11. SAML(Security Assertion Markup Language) • 「SAMLとは、Security Assertion Markup Languageの略称であり、OASISによっ て策定された異なるインターネットドメイン間でユーザー認証を行うための XML を ベースにした標準規格です。2002年に策定され、2005年にはバージョン2.0となって います。」 • 「SAMLを利用することで企業の持つアイデンティティ情報、例えば、Active Directoryなどを利用して、複数のクラウドサービスへのシングルサインオンを実現し ます。つまり、ユーザーは認証サーバーに1回ログインするだけで、SAML対応している クラウドサービスやWebアプリケーションを利用することができるようになるので す。」 • 「また、SAMLはユーザーの属性情報なども付与することができます。単純にユーザー の認証を行うだけでなく、ユーザーがクラウドサービス内のどの機能するなどの認可も 行えるプロ トコルです。例えば、営業部や情報システム部といった属性情報をユーザー 認証に付与することで、この機能は営業部にしか使わせないといったリソースへのアク セス制御が容易にできるようになります。」 • 引用元 • http://www.cybernet.co.jp/onelogin/function/saml.html 2015/8/31 11
  12. 12. Demo 2015/8/31 12
  13. 13. 構築手順(SAMLで連携) 1. (本資料では省略)ドメインコントローラを構築(@AD) • ログインに利用するユーザとセキュリティグループの作成 • (セキュリティグループ) 2. (本資料では省略) ADFSサーバを構築(@AD) 3. ADFSサーバのSAML Document Metadataを取得(@AD) 4. IAMでIdentity Providerを作成(@AWS) 5. IAMでRoleを定義(@AWS) • ロールの名前とPath 6. 証明書利用者信頼(trusted relying party)を設定(@AD) 7. クレームルールを設定(@AD) 2015/8/31 13
  14. 14. 【参考】構築手順(SAMLで連携) • セルフペースラボで手順を確認可能 • Microsoft ADFS and AWS IAM • https://qwiklabs.com/focuses/1596?locale=ja • 15クレジット • 手順書(PDF)だけならクレジット無しで入手可能! • クレジットである程度お膳立てされた環境を入手できる • お布施はご自由に 2015/8/31 14
  15. 15. 3.ADFSサーバのSAML Document Metadataを取得(@AD) • ADFSサーバから入手 • https://adfsserver.mydomain.local/FederationMetadata/2007- 06/FederationMetadata.xml • adfsserver.mydomain.localはADFSサーバ • RPにおけるTokenの検証で必要 2015/8/31 15
  16. 16. 3.ADFSサーバのSAML Document Metadataを取得(@AD) 2015/8/31 16
  17. 17. 4.IAMでIdentity Providerを作成(@AWS) • SAML連携するIdPを登録 • Tokenを検証するためのSAML Document Metadataを設定 • SAML Document Metadataは手順3で取得したもの • aws iam create-saml-providerコマンドで作成可能 2015/8/31 17
  18. 18. 4.IAMでIdentity Providerを作成(@AWS) コマンド aws iam create-saml-provider --saml-metadata-document file://FederationMetadata.xml --name adfs 結果 { "SAMLProviderArn": "arn:aws:iam::************:saml- provider/adfs" } 2015/8/31 18
  19. 19. 5.IAMでRoleを定義(@AWS) • 手順4で作成したIdentity Providerがロールを引き受けることができるよう 信頼関係を設定 2015/8/31 19
  20. 20. 5.IAMでRoleを定義(@AWS) { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { “Federated”: “arn:aws:iam::************:saml-provider/ADFS“ }, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": https://signin.aws.amazon.com/saml } } } ] } 2015/8/31 20
  21. 21. 6.証明書利用者信頼(trusted relying party)を設定(@AD) • ADFSにRPとしてAWSを登録 • 後述するクレームルールを定義 • どのような条件でトークンの発行を承認するか • 発行するトークンをどのように変換するか 2015/8/31 21
  22. 22. 6.証明書利用者信頼(trusted relying party)を設定(@AD) 2015/8/31 22
  23. 23. 6.証明書利用者信頼(trusted relying party)を設定(@AD) 2015/8/31 23
  24. 24. 6.証明書利用者信頼(trusted relying party)を設定(@AD) 2015/8/31 24
  25. 25. 7.クレームルールを設定(@AD) • 一番難しいやつ • 「受け付け変換規則」「発行承認規則」「発行変換規則」として、 発行されるTokenに含まれる属性情報やTokenを発行する条件を定義 • 詳細は以下の資料が参考になります • AD FS deep dive - claim rule set • http://www.slideshare.net/junichia/ad-fs-deep-dive-claim-rule-set • ADFS クレームルール言語 Deep Dive • http://www.slideshare.net/SuguruKunii/deep-dive-42147916 2015/8/31 25
  26. 26. 7.クレームルールを設定(@AD) 2015/8/31 26 受け付け変換規則 発行承認規則 発行変換規則 Token ADDS ADFS Client RP
  27. 27. 7.クレームルールを設定(@AD) • セルフペースラボでは以下の発行変換規則の設定を行っている • Windowsアカウント名をユーザを一意に識別するためのIDとしてクレームを発行 • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier • Windowsアカウント名をセッション名としてクレームを発行 • https://aws.amazon.com/SAML/Attributes/RoleSessionName • 所属するセキュリティグループが条件に合致する場合、 Identity ProviderとIAM RoleのARNをロールとしてクレームを発行 • https://aws.amazon.com/SAML/Attributes/Role 2015/8/31 27
  28. 28. 7.クレームルールを設定(@AD) c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"] => issue(Type = “http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"); ---------- 条件部 発行部 2015/8/31 28
  29. 29. 7.クレームルールを設定(@AD) c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("https://aws.amazon.com/SAML/Attributes/RoleSessionName"), query = ";sAMAccountName;{0}", param = c.Value); ---------- 条件部 発行部 2015/8/31 29
  30. 30. 7.クレームルールを設定(@AD) c:[Type == “http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname”, Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value); ---------- 条件部 Claim ProviderがActive Directoryであり、Windows Account Nameのクレームが発行されている 発行部 Active Directoryから属性を取得 Windows Account NameのtokenGroups(Windows Account Nameのユーザが所属するセキュリティ グループのリスト)をクレームとして仮発行する 2015/8/31 30
  31. 31. 7.クレームルールを設定(@AD) c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "arn:aws:iam::999999999999:samlprovider/ADFS,arn:aws:iam::999999999999:role/AWS-")); ---------- 条件部 (セキュリティグループが)「AWS-」で始まるものが含まれる場合、クレームを発行する 発行部 「AWS-」を 「arn:aws:iam::999999999999:samlprovider/ADFS,arn:aws:iam::999999999999:role/AWS-」 に置換し、「https://aws.amazon.com/SAML/Attributes/Role」に設定 2015/8/31 31
  32. 32. まとめ • SAMLは敷居は高い(特にクレームルール) • AWSを含む各種SaaSとActiveDirectoryなどのIdPを連携させることができる • ユーザが管理するIDの統合とポリシーの集中管理、認証要素の追加などが実現できる 2015/8/31 32
  33. 33. 参考情報 • ADFSを利用してAWSにシングルサインオンする方法 • http://azuread.net/2014/12/04/adfs%E3%82%92%E5%88%A9%E7%94%A8%E3% 81%97%E3%81%A6aws%E3%81%AB%E3%82%B7%E3%83%B3%E3%82%B0%E3 %83%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%B3%E3 %81%99%E3%82%8B%E6%96%B9%E6%B3%95/ • Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0 • http://blogs.aws.amazon.com/security/post/Tx71TWXXJ3UI14/Enabling-Federation- to-AWS-using-Windows-Active-Directory-ADFS-and-SAML-2-0 • Token-Groups attribute • https://msdn.microsoft.com/en-us/library/ms680275(v=vs.85).aspx 2015/8/31 33

×