LoginSignup
0
0

WorkSpaces で Azure AD と SAML 連携をやってみた

Last updated at Posted at 2023-05-25

はじめに

2022 年 11 月ごろに、WorkSpaces が SAML 2.0 の一般提供を開始するアップデートがありました。Azure AD や Okta, OneLogin といった IdP と連携が出来るようになったため、会社の中で全社的な IdP が有る場合はそれと連携ができます。これによって、会社全体のガバナンスポリシーに沿うことができたり、人の入れ替えに対応する負担が軽減できるメリットがあります。

今回の記事では、WorkSpaces と Azure AD で SAML 2.0 の連携を行う設定を紹介します。AWS の公式 Documentサーバーワークスさんの記事を参考にしました!ありがとうございます!

どんなログイン画面になるの?

いきなり設定に入る前に、どんなログイン画面になるのか紹介します。

まず、WorkSpaces Client を起動します。初回限定ですが、WorkSpaces の Registration Code を入力します。

image-20230525012107519.png

Azure AD と SAML 連携をしているため、「Continue to sign in to WorkSpaces」というボタンが表示されます。非 SAML 連携の場合は、このボタンではなく、ID・Password を入力する画面となっています。このボタンを押します。

image-20230525012220991.png

自動的にブラウザが立ち上がり、Azure AD のログイン画面が表示されます。Azure AD にログインします。

image-20230525012257602.png

Azure AD 側で管理されているパスワードを入力します。

image-20230525012312887.png

ブラウザ上で「Log in to WorkSpaces」が表示されるため、これを押します。

image-20230525012339355.png

すると、WorkSpaces Client の画面が自動的に切り替わります。ブラウザで入力したユーザー名が自動的に入力され、再度パスワードが求められます。これは、WorkSpaces と連携している Active Directory 上のユーザーのパスワードを入力します。 Azure AD だけで完結するわけではなく、別途 Active Directory や Microsoft AD が必要なのが注意点ですね。

Active Directory 側のパスワードを入力します。技術的には Azure AD と Active Directory のパスワードが異なっている場合でも、それぞれ別のパスワードを入力すれば利用可能です。ただ、二重管理は面倒です。本番環境では、Azure AD Connect を構成することで、Active Directory と Azure AD 間のユーザーやパスワードを同期するとよいでしょう。

image-20230525015046569.png

無事にログインが出来ると、WorkSpaces の画面が表示されます。

image-20230525023525075.png

構成図

この記事で検証する構成図を紹介します。個人的に勘違いしていたのが、Azure AD があれば Active Directory が不要だと思い込んでいたんですが、そんなことなかったです。Azure AD と Active Directory の両方を利用しています。

image-20230525123348472.png

これは余談ですが、本番環境を想定すると、Azure AD と Active Directory でユーザー情報を二重管理するのは大変です。Azure AD Connect を EC2 などで構成することで、Azure AD と Active Directory 間のユーザーやパスワードを同期するとよいでしょう。次の構成図のように、Azure AD Connect を用意する構成が考えられます。

image-20230525123613819.png

それでは設定をしてみましょう!

Azure AD : エンタープライズアプリケーションの作成

image-20230524230607901.png

新しいアプリケーションを選択します。

image-20230524230723289.png

独自アプリケーションの作成を押します。

image-20230524230750775.png

適当に名前を入れて、作成を押します。

image-20230524230846653.png

作成されました。

image-20230524233326869.png

Azure AD : フェデレーションメタデータのダウンロード

作成したエンタープライズアプリケーションを選択します。

image-20230524233334542.png

シングル サインオンの設定を押します。

image-20230524233219906.png

SAML を選択します。

image-20230524233355902.png

AWS で提供されている SAML メタデータを、作業用端末にファイルとして保存します。

メタデータ ファイルをアップロードする を押します。

image-20230524233530451.png

ダウンロードした XML ファイルを選択して、追加を押します。

image-20230524233604867.png

保存を押します。

image-20230524233705093.png

フェデレーション メタデータ XML をダウンロードします。

image-20230524233837543.png

AWS : IAM で Identity Provider を作成

AWS のマネージメントコンソールにある IAM で作業を進めます。Identity Provider のメニューで Add provider を押します。

image-20230524234000051.png

名前の指定や、ダウンロードしたメタデータ XML ファイルをアップロードして、Add provider を押します。

image-20230524234103925.png

Identity Provider が作成されました。

image-20230524234216437.png

AWS : IAM Role を作成

WorkSpaces と Azure AD が連携するための IAM Role を作成します。

Create Role を押します。

image-20230524234316867.png

Identity Provider 等の指定を行います。

image-20230524234512784.png

後で権限設定をするため、Next を押します。

image-20230524234544237.png

IAM Role 名を適当に指定します。

image-20230524234750691.png

Create Role を押します。

image-20230524234813036.png

IAM Role が作成されました。作成した IAM Role の画面で、Edit trust policy を押します。

image-20230524234930743.png

TagSession を追加して、Update policy を押します。

image-20230524235015391.png

次に、Permissions から、Create Inline policy を押します。

image-20230524235106571.png

次のような JSON ポリシーを入力します。環境に合わせて書き換えてください。

  • リージョン名 : ap-northeast-1
  • AWS アカウント ID : 111111111111
  • Directory の ID : d-95677d48dc
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "workspaces:Stream",
            "Resource": "arn:aws:workspaces:ap-northeast-1:111111111111:directory/d-95677d48dc",
            "Condition": {
                "StringEquals": {
                    "workspaces:userId": "${saml:sub}"
                }
            }
        }
    ]
}

image-20230525000310836.png

適当に名前を入れて、保存を押します。

image-20230525000440303.png

Azure AD : SAML 認証応答のアサーションを設定

Azure AD の画面で、属性とクレームから編集を押します。

image-20230525000611435.png

次の値を入れていきます。

クレーム名
一意のユーザー識別子 (名前 ID) user.mailnickname [nameid-format:persistent]
https://aws.amazon.com/SAML/Attributes/Role IAM ロールのARN,Identity Provider の ARN
https://aws.amazon.com/SAML/Attributes/RoleSessionName user.mailnickname
https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email user.mail

まず、デフォルトで存在している 4 行のクレームは削除します。

image-20230525001612376.png

新しいクレームの追加を押します。

image-20230525001755093.png

Role に関する設定を入れます。この「ソース属性」は、AWS IAM 上で作成した IAM Role と、Identity Provider の ARN をカンマ区切りで入力します。AWS アカウント ID はダミーですが、こんな感じで入力します。

arn:aws:iam::111111111111:role/WorkSpacesSamlAccessRole,arn:aws:iam::111111111111:saml-provider/AzureADforWorkSpaces

image-20230525002046538.png

設定されました。

image-20230525002227927.png

このような感じで、残りの設定を入れていきます。次の画面が全て入れた状態です。

image-20230525002607785.png

「必要な要求」の部分は、このように設定します。「永続的」と指定するところが見逃し気味なので注意しましょう。

image-20230525002520683.png

Azure AD : フェデレーションのリレー状態を構成する

基本的な SAML 構成を編集します。

image-20230525002732900.png

リレーの状態に設定するURLは、リージョンごとに異なりますが、東京リージョンの場合は、以下のURLになります。

https://workspaces.euc-sso.ap-northeast-1.aws.amazon.com/sso-idp?registrationCode=【WorkSpacesの登録コード】

WorkSpaces の登録コードは、AWS マネージメントコンソールから確認が可能です。

image-20230525003540085.png

次のように指定して保存します。

image-20230525003441617.png

Active Directory : ユーザーを登録

Active Directory 上でユーザーを作成します。今回は技術検証なので、Active Directory 上のユーザーと、Azure AD 上でそれぞれ二重管理をします。本番の環境は二重管理になるの辛いので、Azure AD Connect を使って同期をするとよいでしょう。

image-20230525005622772.png

ws-user01 で作成します。

image-20230525013240164.png

パスワードを指定します。

image-20230525005801148.png

ユーザーが作成されました。

image-20230525013313107.png

該当のユーザーのプロパティから、メールアドレスを指定します。これは、Azure AD 上のユーザーのメールアドレスと同じであることが必要です。

image-20230525015901707.png

Azure AD : ユーザー作成

新しいユーザーを作成します。

image-20230525005936221.png

Azure AD 上でも同じ名前でユーザーを作成します。

image-20230525010401081.png

作成を押します。

image-20230525010428215.png

ユーザーが作成されました。

image-20230525010532290.png

作成したユーザーのプロパティを編集します。

image-20230525020108852.png

メールアドレスを指定して、保存を押します。Active Directory 側と一致が必要です。

image-20230525020142880.png

WorkSpaces 用に作成したエンタープライズアプリケーションにユーザーを紐づけます。

image-20230525010615980.png

選択を押します。

image-20230525010640167.png

割り当てを押します。

image-20230525010712437.png

割り当てられました。

image-20230525010800635.png

Azure AD : アプリのリンクをコピー

https://myapps.microsoft.com/
にアクセスして、Azure AD 上で作成したユーザーを使ってログインします。

WorkSpaces のアプリが表示されているので、「リンクのコピー」を押します。

image-20230525011118063.png

このような URL がコピーされます。

https://launcher.myapps.microsoft.com/api/signin/e3b25c8a-1e91-452b-b7fb-26894694fb31?tenantId=54d4fb23-4655-46de-ab3a-4698a1111116

上記リンクの「/signin/」以降をコピーして、https://myapps.microsoft.com/signin/ の末尾に付与します。付与した例が以下の通りです。

https://myapps.microsoft.com/signin/e3b25c8a-1e91-452b-b7fb-26894694fb31?tenantId=54d4fb23-4655-46de-ab3a-4698a1111116

WorkSpaces : SAML 2.0 を有効化する

WorkSpaces から、Directory を選択します。

image-20230525011430028.png

Authentication を編集します。

image-20230525011508617.png

SAML 2.0 Identity Provider を編集します。

image-20230525011533580.png

生成した URL を入力して、Save を押します。

image-20230525011639861.png

WorkSpaces で該当のユーザーに作成する

WorkSpaces で、概要のユーザー用の環境を作成します。Create WorkSpaces を押します。

image-20230525015408349.png

該当の Directory を指定します。

image-20230525015432367.png

該当のユーザーを選択して、Next を押します。

image-20230525015545623.png

適当に Bundle を指定して Next を押します。

image-20230525015645053.png

自動停止を有効にして、Next を押します。

image-20230525015722383.png

デフォルトのまま Next を押します。

image-20230525015741107.png

Create を押します。

image-20230525015750440.png

これで設定が完了です!

動作確認

動作確認をしていきましょう。WorkSpaces Client がインストールされている端末で、Registration Code を入力します。Registration Code は二回目以降はスキップすることもできます。

image-20230525012107519.png

「Continue to sign in to WorkSpaces」 のボタンを押します。

image-20230525012220991.png

自動的にブラウザが立ち上がり、Azure AD のログイン画面が表示されます。Azure AD にログインします。

image-20230525012257602.png

Azure AD 側で管理されているパスワードを入力します。

image-20230525012312887.png

ブラウザ上で「Log in to WorkSpaces」が表示されるため、これを押します。

image-20230525012339355.png

すると、WorkSpaces Client の画面が自動的に切り替わります。ブラウザで入力したユーザー名が自動的に入力され、再度パスワードが求められます。これは、WorkSpaces と連携している Active Directory 上のユーザーのパスワードを入力します。

image-20230525015046569.png

無事にログインが出来ると、WorkSpaces の画面が表示されます。

image-20230525023525075.png

Tips1 : sAMAccountName の確認方法

Active Directory の sAMAccountName と、Azure AD 側で設定した「一意のユーザー識別子 (名前 ID)」の「user.mailnickname」の一致が必要です。

Active Directory の sAMAccountName は、PowerShell で以下のコマンドを実行することで確認できます。

以下の表示の「SamAccountName」がsAMAccountName です。

PS C:\Users\Admin> Get-ADUser -Filter { SamAccountName -eq "ws-user01" } | Format-List


DistinguishedName : CN=ws-user01,OU=Users,OU=sharead,DC=sharead,DC=local
Enabled           : True
GivenName         :
Name              : ws-user01
ObjectClass       : user
ObjectGUID        : df0ea6fe-3b1c-4698-a2fe-e348ef7eb87f
SamAccountName    : ws-user01
SID               : S-1-5-21-2415499674-2393242095-994390223-1610
Surname           : ws-user01
UserPrincipalName : ws-user01@sharead.local



PS C:\Users\Admin>

この記事の環境では、sAMAccountName の「ws-user01」と、Azure AD 上のメールニックネームの「ws-user01」一致していることが必要です。なお、SAML のクレーム要求の設定で紐づけを変えることもできるはずです。

image-20230525130015293.png

検証を通じてわかったこと

  • Azure AD と連携をしても、別途 Active Directory や Microsoft AD が必要。
  • ユーザーやパスワードが、Azure AD と Active Directory で二重管理するのが辛いので、Azure AD Connect で連携するのが良さそう
  • WorkSpaces で SAML 連携をしていると、Web ブラウザからのアクセスが利用できない。ログインしようとしてもエラー画面が表示される。SAML 連携を行う場合は、OS にインストールする WorkSpaces Client から利用する。

参考 URL

【Amazon WorkSpaces】Azure ADを利用したSAML認証を試してみた
https://blog.serverworks.co.jp/workspaces-saml

Setting up SAML 2.0
https://docs.aws.amazon.com/workspaces/latest/adminguide/setting-up-saml.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0