[SAML]Amazon ConnectにAzureADからSSOしてみた

Amazon Connectに対してシングルサインオンを設定したのでその備忘録です。

シングルサインオンすると何が嬉しいのか

  • ユーザ側
    • 普段ログインしているID/PASSでログインできる。
  • 管理者側
    • Amazon Connectへアクセス可能なグローバルIPなどを制限できる。
      • 外からアクセスさせずに、社内からのみアクセスしたいというニーズはあるかなと。

詳細

①AzureAD側作業 その1:SSO用のアプリケーション作成

  1. Azure Portalにログインして、 「アプリケーションの追加」を選び、「ギャラリーから追加する」からAWSを選ぶ。 f:id:undersooon:20181217191338p:plain
  2. 適当な名前をつけて「追加」と選択する。 f:id:undersooon:20181217191610p:plain
  3. シングルサインオン - SAML を選択する。 f:id:undersooon:20181217191857p:plain
  4. 任意の(なんでもいい)識別子を設定する。 f:id:undersooon:20181217192157p:plain
  5. 証明書(フェデレーション メタデータXMLの方)をダウンロードする。 f:id:undersooon:20181217193257p:plain
  6. ユーザーの追加で、SSOアクセスさせたいユーザ名、もしくは、グループ名を選択しておく。 f:id:undersooon:20181217201222p:plain

AWS側作業その1: Amazon Connectインスタンスの用意

  1. Amazon Connectを開き、「インスタンスを追加する」を選択し、「SAML2.0~」を選択する。 f:id:undersooon:20181217231436p:plain f:id:undersooon:20181217231401p:plain
  2. ユーザーは後で作るので、一旦スキップにしておく。 f:id:undersooon:20181217231637p:plain
  3. 以降はデフォルトのまま選択し、インスタンスを作成する。 f:id:undersooon:20181217231830p:plain
  4. 「今すぐ始める」でAmazon Connectインスタンスに一旦ログインし、ユーザ作成画面を開き、「Add New User」でSSO連携したいユーザを登録しておく。 f:id:undersooon:20181217232017p:plain f:id:undersooon:20181217232150p:plain f:id:undersooon:20181217232437p:plain
  5. 一旦、Amazon Connectインスタンスからはログアウト。Amazon Connectを再び開き、インスタンス一覧から作成したインスタンスを選択し、概要を確認。あとで使うので、「インスタンスARN」の値を控えておく f:id:undersooon:20181217200023p:plain

AWS側作業 その2:SSO用設定

  1. IAM画面から「ID プロバイダー」を選択する。 f:id:undersooon:20181217193755p:plain
  2. プロバイダーのタイプを「SAML」にして、AzureADからダウンロード済みのXMLをアップロードする。 f:id:undersooon:20181217194010p:plain
  3. IAM Roleを作りたいので、「ロール」を選択する。 f:id:undersooon:20181217194742p:plain f:id:undersooon:20181217194907p:plain
  4. SAML2.0フェデレーションを選び、SAMLプロバイダーには上記で作成したIDプロバイダ名を指定して、「プログラムによるアクセスとAWSマネジメントコンソール~」を選択する。 f:id:undersooon:20181217195114p:plain
  5. 何も設定せず、「次のステップ」へ。 f:id:undersooon:20181217195213p:plain f:id:undersooon:20181217195233p:plain
  6. ロール名にわかりやすい名前をつけて、ロールの作成をする。 f:id:undersooon:20181217195344p:plain
  7. 作成したロールに対してAmazon Connectを利用する権限を付与する。 f:id:undersooon:20181217195646p:plain
  8. JSON」タブを選択して、下記のように記載。  
{
    "Version": "2012-10-17",
   "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": "connect:GetFederationToken",
            "Resource": [
                "<AWSを側作業その一で事前に確認したARN値>/user/${aws:userid}"
            ]
        }
    ]
}
  1. 下記のように表示されるので「Create policy」する。 f:id:undersooon:20181217200932p:plain
  2. 作成したIDプロバイダとロールのARNをあとで使うので控えておく。 f:id:undersooon:20181218005406p:plain f:id:undersooon:20181218005539p:plain

④AzureAD側作業 その2:Azure側にAWS側に施したSSO用の設定を追加。

  1. 再び、Azure Active Dirctoryを選択して、「シングルサインオン」 - 「ユーザ属性と要求」を選択して、下記のような値を入力する。 ※基本的にはRoleとRoleSessionNameだけ追加すればいいだけのはず。 f:id:undersooon:20181217203058p:plain f:id:undersooon:20181217203234p:plain
名前 名前空間 ソース属性
nameidentifier http://schemas.xmlsoap.org/ws/2005/05/identity/claims user.userprincipalname
emailaddress http://schemas.xmlsoap.org/ws/2005/05/identity/claims user.mail
givenname http://schemas.xmlsoap.org/ws/2005/05/identity/claims user.givenname
name http://schemas.xmlsoap.org/ws/2005/05/identity/claims user.userprincipalname
surname http://schemas.xmlsoap.org/ws/2005/05/identity/claims user.surname
Role https://aws.amazon.com/SAML/Attributes [AWS側作業その2のロールのARN],[AWS側作業その2のID ProviderのARN]
RoleSessionName https://aws.amazon.com/SAML/Attributes user.userprincipalname
  1. 続いて「基本的な SAML 構成」を選択して、リレー状態に下記URLを入力する。
  2. 入力するURLは https://ap-northeast-1.console.aws.amazon.com/connect/federate/<インスタンスID> を入力する。
  3. インスタンスIDはAWS側作業その1で確認したAmazon Connect インスタンスのARNから「instance/」以降の値を入力する。(例:arn:aws:connect:ap-northeast-1:276429087547:instance/hogepiyoの場合、hogepiyoがインスタンスID) f:id:undersooon:20181217234351p:plain

  4. アクセス先を制限するため、「条件付きアクセス」を選択。要件に合ったアクセス条件を設定する。 f:id:undersooon:20181217234852p:plain

参考にさせて頂いたURL

dev.classmethod.jp

Single Sign-On With Amazon Connect And Azure Active Directory - Perficient Blogs

blogs.perficient.com