Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第128回雲勉【オンライン】ADFSによるSAMLを使用したAppStreamへのシングルサインオンアクセス 完成
Search
iret.kumoben
February 22, 2024
Technology
0
96
第128回雲勉【オンライン】ADFSによるSAMLを使用したAppStreamへのシングルサインオンアクセス 完成
下記、勉強会での資料です。
https://youtu.be/Elir-hPsDDY
iret.kumoben
February 22, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第140回 雲勉 今度こそ AWS CDK で構築してみたくなるようなCDK活用集
iret
0
33
第139回 雲勉 Amazon Q Developerで安全快適な IaC with Terraform
iret
0
32
第138回 雲勉 Google Cloudではじめるプラットフォームエンジニアリング
iret
0
30
第137回 雲勉 Google Cloud Vertex AIとLangGraphを味方につけてRAGを改善したひ
iret
0
78
第136回 雲勉 AIに構成図を読み込ませてサーバー作成(Amazon Bedrock)
iret
0
86
第135回 雲勉 AWS Verified Access 入門 ~ VPNを利用せずに拠点/端末からAWSへアクセス ~
iret
1
120
第134回 雲勉 未経験クラウドエンジニア1年生(社会人1年生)の奮闘記
iret
0
60
第133回 雲勉 【オンライン】今度こそ既存のAWSリソースをいい感じにコードに落とし込みたい!
iret
0
55
第132回 雲勉【オンライン】春の生成AI祭り
iret
1
73
Other Decks in Technology
See All in Technology
初中級者用如何使用backlog -VALE TUDOEDITION-
in0u
0
140
RAGのサービスをリリースして1年3ヶ月が経ちました
segavvy
4
960
Azure OpenAI Service Dev Day / LLMでできる!使える!生成AIエージェント
masahiro_nishimi
3
810
[NIKKEI Tech Talk]Bias for Action!! 実践から学ぶための仕組とコミュニティ / Community for Practice and Learning
kanamasa
0
280
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
630
What if...? 처음부터 다시 LLM 어플리케이션을 개발한다면
huffon
0
1k
CTOから見た事業開発とプロダクト開発 / My Perspective on Business and Product Development as CTO
keisuke69
4
960
VPoEの視点から見た、ヘンリーがサーバーサイドKotlinを使う理由 / Why Server-side Kotlin 2024
cho0o0
1
420
楽しくGoを学び合う、LayerXの勉強会文化 / LayerX's study culture of having fun and learning Go together
ar_tama
2
350
【基調講演】変える、今ここから ― IoTとAIで紡ぐ未来
soracom
PRO
0
320
Git 研修 Basic【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
310
コミュニティサービスに「あなたへ」フィードを リリースするまでの試行錯誤
takapy
1
150
Featured
See All Featured
Ruby is Unlike a Banana
tanoku
96
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
Six Lessons from altMBA
skipperchong
24
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
Visualization
eitanlees
139
14k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
Teambox: Starting and Learning
jrom
130
8.6k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Testing 201, or: Great Expectations
jmmastey
33
6.9k
How GitHub (no longer) Works
holman
305
140k
Automating Front-end Workflow
addyosmani
1362
200k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
Transcript
第128回 雲勉【オンライン】 ADFSによるSAMLを使⽤したAppStream へのシングルサインオンアクセス
2 • 野崎 ⾼弘(のざき たかひろ) • アイレット株式会社 クラウドインテグレーション事業部 プロジェクト企画推進セクション インフラ技術
• インフラ構築・保守やSOCセキュリティアナリストをやってました • 現在は技術検証やドキュメント作業が主 • 趣味︓資格取得、⽝の散歩、ドラマ鑑賞、巨⼈ファン • 現在、AWS全冠、GCP全冠 3 ⾃⼰紹介
本セッションの内容 3 SAMLを使⽤してAppStream 2.0のIDフェデレーションをADFSで実現し、AppStream 2.0 にシングルサインオンアクセス ADと連携してAppStreamにアクセスして安全にアプリケーションを利⽤したい、という場合には、 AppStreamとADの間にADFS(Active Directory Federation
Service)サーバーを⽴てる必要があります。 そこで本セッションでは、基本構成が構築済みであることを前提に、様々な基本的な改良を加えていきま す。 (参考) Amazon AppStream 2.0 & ADFS Integration (Korean) Amazon AppStream 2.0 の ID フェデレーションを AD FS 3.0 で実現する サードパーティーの SAML 2.0 アイデンティティプロバイダーを使⽤した属性ベースのアプリケーションの 使⽤権限 ADFSによる多要素認証の設定
条件と対象者 4 条件 • AppStreamにアクセスするには、Windows⽤AppStream 2.0クライアントアプリケーション または HTML5対応Webブラウザが必要になります。 • 関連するロールやポリシーには、あらかじめ必要な権限が付与されているものとします。
• クライアント認証で使⽤するため、以下のポートが許可されているものとします。 ADFS側の49443ポート AD側の3268番ポート 対象者 AppStreamの認証にADでのSAML認証を⾏いたい、中級者レベル以上を想定
事前知識︓AppStreamとは 5 Amazon AppStream 2.0とは、ブラウザからデス クトップアプリケーションに即座にアクセスでき るようにするアプリケーションストリーミング サービスです。既存のデスクトップアプリケー ションを追加して、ユーザーがそれらをストリー ミングできるようにすることが可能です。クライ
アントソフトの画⾯をストリーミングしてくれま す。 デスクトップ環境を提供するWorkSpacesに対 し、特定のアプリケーションのみの実⾏に限定さ れているのがAppStreamです。
全体像 6 ※注︓この構成図はあくまで今回の検証⽤の簡易な構成であり、実際の本番想定の構成では、ADFSはパブリックサブネッ トに置くのではなく、例えばNLBを挟んでプライベートサブネットに配置してセキュアにしたり、冗⻑構成などにすること が推奨されます。
認証⼿順 7 1. ユーザーが ADFS Relay State URL を参照すると、サインインページで認証が要求されます。 2.
ADFSは、ADに対する認証を要求します。 3. ADがユーザーを認証して認証結果をADFSに返します。 4. 認証が成功すると、ADFSは認証成功のトークンとしてSAMLアサーションをブラウザに送信します。 5. ブラウザは、SAMLアサーションをAWSサインインSAMLエンドポイント (https://signin.aws.amazon.com/saml) に転送します。 6. AWS サインインは SAML リクエストを受け取り、処理、ユーザーを認証し、認証トークンを AppStream 2.0 サービスに転送します。 7. AppStream 2.0は AWS からの認証トークンを使⽤して、設定に基づいてブラウザにアプリケーションを 表⽰します。
認証⼿順 8
事前作業 9 • AppStreamとADFSの構築⾃体はAmazon AppStream 2.0 & ADFS Integration (Korean)のチュートリ
アルに従えば誰でも簡単にできますので、ここでは割愛し、既にAppStream+ADFS環境が構築されてい るものとします。
デモ⼿順概要 10 No 作業内容 1 正常にAppStreamが閲覧できることを確認 2 改良1︓SAML 2.0 マルチスタック
アプリケーション カタログ 3 改良2︓グループによるアプリの表⽰制御 4 改良3︓AppStreamクライアント経由でAppStreamに直接アクセス 5 改良4︓AppStreamへのアクセスをAppStreamクライアントにリダイレクト 6 改良5︓AppStream fleetをマルチセッションで構成
デモ 11 ここからデモも交えて実際の動きを⾒ながら説明します。 (全部で15〜20分くらいかかります)
1.正常にAppStreamが閲覧できることを確認 12 まず、以下のリレーステートURLにアクセスし、ADFS認証画⾯にログイン後、無事AppStreamにリダイレ クトされることを確認 https://adfs.nozaki2.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F %252Fsignin.aws.amazon.com%252Fsaml%26RelayState%3Dhttps%253A%252F%252Fappstrea m2.ap-northeast- 1.aws.amazon.com%252Fsaml%253Fstack%253Dnozakilab2stack2%2526accountId%253DAWSア カウントID
2.改良1︓SAML 2.0 マルチスタック アプリケーション カタログ 13 URLにスタック名が⼊っていると、1URL︓1スタック固定になっているので、スタックごとにURLを作成す る必要があります。 そこで、SAML 2.0
Multi-Stack Application Catalog により、単⼀のリレー状態URLから複数のスタックへ のアクセスを有効にするマルチスタックアプリケーションカタログという機能を使います。アプリケーショ ン資格が1つ以上のアプリケーションとユーザーに⼀致したすべてのスタックが表⽰されるようになります。 1. IAMポリシーの変更 “Resource”: “arn:aws:appstream:ap-northeast-1:AWSアカウントID:stack/*" 2. リレーステートURLからスタック名を削除 https://adfs.nozaki2.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fsignin .aws.amazon.com%252Fsaml%26RelayState%3Dhttps%253A%252F%252Fappstream2.ap-northeast- 1.aws.amazon.com%252Fsaml%253Fstack%253Dnozakilab2stack2%2526accountId%253DAWSアカウントID 3. 2.のURLにアクセスしてスタック名が表⽰されることを確認
3.改良2︓グループによるアプリの表⽰制御 14 ADのグループ情報から、AppStreamで表⽰させるアプリの制御を⾏えます。 例)admin2グループに属する⼈はFirefoxが表⽰される。userグループに属する⼈はChromeが表⽰される という感じで、ユーザーのグループ毎にアプリの出し分けができます。これにより、ユーザーごとに AppStream内で利⽤可能なアプリを制御することが可能になります。 1. AD側︓admin、test01ユーザーの所属グループの確認 2. AWS側︓AppStream
StackのApplication Entitlementsの設定 3. ADFS-roleの信頼ポリシーで「sts:TagSession」を追加 4. ADFS側︓グループメンバーシップの設定 5. AppStreamにアクセスして検証
4.改良3︓AppStreamクライアント経由でAppStreamに直接アクセス 15 ブラウザ以外に、AppStreamクライアントを利⽤して、専⽤のURLを⼊⼒することで、AppStreamに直接ア クセスすることもできます。これにより、ブラウザを使⽤してAppStreamにアクセスした場合には利⽤でき ない機能やメリットがあります。 (参考)Windows ⽤ AppStream 2.0 クライアントアプリケーションの機能
※ADドメイン参加したスタックからのストリーミングURL作成は⼤変複雑となるため、今回は対象外とします。 1. AWS︓AppStreamスタックから、[Create Streaming URL]でURLを⽣成 2. Windowsマシンで https://clients.amazonappstream.com/ からAppStream Windows Clientをダウ ンロードしてインストール 3. AppStream Windows Clientを起動して、1.のURLを⼊⼒ 4. AppStreamにアクセスできることを確認
5.改良4︓AppStreamへのアクセスをAppStreamクライアントにリダイレクト 16 ストリーミングセッションをウェブブラウザから AppStream 2.0 クライアントにリダイレクトする に従 い、今度はブラウザ⇨AppStreamクライアント経由でAppStreamにアクセスしてみます。これにより、ユー ザーはAppStreamクライアントを意識することなく、ブラウザに⽂字列を⼊れるだけでAppStreamに直接ア クセスできます。
1. スタックからストリーミングURLを作成 2. 1.をbase64エンコードして⽣成された⽂字列を、「amazonappstream:」の後に繋げる 3. 2.をAppStreamクライアントが⼊っているWindowsのブラウザ欄に⼊⼒する 4. 「Amazon AppStream 2.0を開く」を選択し、AppStreamクライアントが起動してAppStreamにアク セスしに⾏く
6.改良5︓AppStream fleetをマルチセッションで構成 17 昨年10⽉に発表されたマルチセッションフリート機能により、1つのAppStreamインスタンスで複数のエン ドユーザーセッションをホストしてインスタンスリソースをより有効に活⽤できるようになりました。 〔条件〕 • フリートタイプがAlways-On または On-Demand
• Windows 2019のみ(2016や2022、Linuxは不可) • 2023年5⽉15⽇以降にリリースされたベースイメージとマネージドイメージの更新 〔ユースケース〕 フリート上限に気にすることなくフリートを節約でき、起動速度(約10分)を短縮したい場合 (参考) https://docs.aws.amazon.com/appstream2/latest/developerguide/set-up-stacks- fleets.html#set-up-stacks-fleets-create
感想・まとめ 18 • リレーステートURLからスタック名を省略すると、マルチスタックアプリケーションカタログが実現でき る • Application Entitlementsを使えば、所属グループによって表⽰させるアプリを制御できる • AppStreamクライアント経由でAppStreamに直接アクセスできる
• マルチセッションフリートを構成することで、複数ユーザーを同時接続できる • ADFS経由でAppStreamに接続するには、要求発⾏ポリシーの設定を慎重に正確に⾏ってください。
None