AWS再入門ブログリレー2022 AWS Single Sign-on編

弊社コンサルティング部による「AWS 再入門ブログリレー 2022」の 33 日目のエントリ「AWS Single Sign-on」です。
2022.03.21

当エントリは弊社コンサルティング部による「AWS 再入門ブログリレー 2022」の 33 日目のエントリです。

このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2022 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合いいただければ幸いです。

本日のテーマは「AWS Single Sign-on」です。


AWS Single Sign-on とは

AWS Single Sign-on (以下、AWS SSO) とは、AWS アカウントおよびクラウドアプリケーションへのアクセスの一元管理を容易にするサービスです。

AWS SSO には主に次の機能があります。

  • Single Sign-on アクセス
    • 複数の AWS アカウントへの SSO アクセス
    • クラウドアプリケーションへの SSO アクセス
  • ユーザーとグループの管理
    • AWS SSO のローカル ID ストア管理
    • Active Directory 連携
    • 外部 ID プロバイダー連携

利用の前提条件

AWS SSO 利用の前提条件として、AWS Organizations を有効化する必要がありますので、ご注意ください。


AWS SSO の利用イメージ

AWS SSO はユーザーポータルを提供し、認証されたユーザーはユーザーポータル経由で複数の AWS アカウントやクラウドアプリケーションにアクセスできます。

ユーザーの認証情報は AWS SSO のローカル ID ストアで管理するか Active Directory もしくは外部 ID プロバイダーと連携することで一元的な管理を実現できます。各 AWS アカウントにおいて個別にマネジメントコンソールへのアクセス用 IAM ユーザーを用意する必要がなくなり、管理の手間を削減できます。


3 つの AWS アカウントと Salesforce を登録している場合のユーザーポータル画面です。AWS アカウントへのアクセス時はロールも選択してアクセスします。


以降は、Single Sign-on アクセス機能とユーザーとグループの管理機能をそれぞれ説明します。

Single Sign-on アクセス機能

AWS SSO は複数の AWS アカウントと SAML 2.0 に対応しているクラウドアプリケーションに対して SSO アクセスを提供します。

AWS アカウントへの SSO アクセス

AWS SSO は AWS Organizations と統合されており、AWS Organizations の各 AWS アカウントに対してユーザー毎に権限(アクセス許可セット)を割り当てることで、SSO アクセスを行います。

AWS SSO の設定を行うことで、AWS SSO と AWS アカウントの間で SAML 2.0 による認証連携の設定が自動的に行われ、AWS アカウントには IAM ID プロバイダや IAM ロールが作成されます。

言葉だけではイメージが湧かないと思いますので、イメージを掴むために始めに次のブログを見ることをおすすめします。


アクセス許可セット(アクセス権限セット)

アクセス許可セットとは、AWS アカウント毎にユーザー/グループに対して割り当てる権限(ポリシー)です。

アクセス許可セットには、事前に定義されている「既存の職務機能ポリシー」を利用する方法とユーザーが独自に設定できる「カスタムアクセス権限セット」を作成する方法があります。

「カスタムアクセス権限セット」では、「AWS 管理ポリシー」とユーザーが独自に設定できる「カスタムアクセス権限ポリシー」を組み合わせて設定します。設定内容は、権限を割り当てた AWS アカウントにおいて IAM ロールとして作成され、「カスタムアクセス権限ポリシー」はインラインポリシーとして設定されます。なお、IAM ポリシーの「カスタマー管理ポリシー」をアタッチすることはできない点に注意が必要です。

ユーザーポータルから AWS アカウントにアクセスする場合は、アクセス許可セットの設定が反映された IAM ロールにスイッチロールします。


アクセス許可セットの設定において「リレーステート」を指定することができます。「リレーステート」とは、ユーザーが AWS アカウントにアクセスした際に最初に表示するページを指定できる機能です。この機能を利用して常に東京リージョンのホーム画面を表示させることもできます。


アクセス権限の割り当て

各 AWS アカウントに対して権限を割り当てる際は、ユーザーまたはグループに対してアクセス許可セットを設定します。

一つのアカウントとユーザー/グループの組み合わせに対して、複数のアクセス許可セットを割り当てることも可能です。

例えば、下図の通り 2 つのアクセス許可セットを同じグループに割り当てることができます。変更作業をしないときは ReadOnlyAccess を利用して、変更作業を行うときはAdministratorAccess を利用することで、誤って設定変更する作業ミスの軽減が期待できます。


割り当てた権限を棚卸ししたい場合は aws-sso-utils が便利です。簡単に AWS アカウントに対して割り当てているユーザー/グループとアクセス許可セットの組み合わせを csv 形式で出力できます。


サインイン方法

AWS SSO ユーザーポータルにおいて AWS アカウントとアクセス許可セットを選択してアクセスします。マネジメントコンソールの他に一時的な認証情報を用いるコマンドラインインターフェースも利用できます。


Windows インスタンスへのアクセス

利用用途の一つとして、AWS Fleet Manager と連携することで Windows の EC2 インスタンスへのアクセス権限をユーザーに提供することができます。必要なアクセス許可セットの設定等は次のブログが参考になります。


クラウドアプリケーションへの SSO アクセス

AWS SSO では IDaaS 製品のように AWS アカウント以外のクラウドアプリケーション(Slack や Salesforce など)への SSO アクセス機能も提供しています。

連携しやすいように、いくつかのクラウドアプリケーションについては簡易に設定できるカタログが提供されています。カタログにないアプリケーションでも SAML 2.0 に対応していれば「カスタム SAML 2.0 アプリケーションの追加」の設定により連携できます。


また、次の例のような AWS の個別サービスや AWS Organizations に所属していない AWS アカウントに直接アクセスする設定もできます。


ユーザーとグループの管理機能

AWS SSO にはユーザーとグループを管理する機能があり、次のいずれかの方法で管理または認証連携ができます。

  • AWS SSO のローカル ID ストア管理
  • Active Directory 連携
  • 外部 ID プロバイダー連携


AWS SSO のローカル ID ストア管理

AWS SSO のローカル ID ストア内に独自のユーザーとグループを作成して管理する方法です。 ユーザーまたはグループに対して、アクセス権限セットやクラウドアプリケーションを割り当てることでアクセスを実現します。


Active Directory 連携

Active Directory と連携でき、AWS のブラックベルト資料に記載されている構成パターンが構成検討の参考になります。

参照元:AWS アカウント シングルサインオンの設計と運用

以下のブログでは AWS の Active Directory 関連サービスについて紹介させていますので、合わせて読んでいただくことで理解が深まります。


外部 ID プロバイダー連携

SAML 2.0 に対応している IDaaS などの外部 ID プロバイダーと連携できます。

外部 ID プロバイダーと認証連携した場合は、アクセス権限の設定のためにユーザーとグループ情報をプロビジョニング(同期)する必要があります。プロビジョニングには自動と手動があり、自動プロビジョニングがサポートされている ID プロバイダーは 2022 年 3 月 21 日時点では次のサービスとなります。こちら で確認できます。

  • Azure AD
  • CyberArk
  • JumpCloud
  • Okta
  • OneLogin
  • Ping Identity

自動プロビジョニングに対応していない外部 ID プロバイダーと連携する場合は手動でプロビジョニングする必要があり、外部 ID プロバイダーでユーザーが追加された場合は、AWS SSO 側でもユーザーの登録作業が必要となります。


サインイン方法

例として、Azure AD と連携した場合のサインイン方法を紹介します。

Azure AD と連携する場合は AWS SSO ユーザーポータルにサインインする方法の他に Azure AD マイアプリポータルからアクセスすることもできます。

AWS SSO ユーザーポータルからサインインする場合は、AWS SSO から Azure AD に対して SP-Initiated の認証フローにより Microsoft アカウントの認証が行われます。

Azure AD マイアプリポータルから AWS SSO にアクセスする際は、Azure AD から AWS SSO に対して IdP-Initiated の認証フローによりアクセスされます。


外部 ID プロバイダーとの連携ブログ

外部 ID プロバイダーとの連携方法はブログになっているサービスも多いため紹介します。

Azure AD との連携

Okta との連携

OneLogin との連携


終わりに

AWS Single Sign-on の主要な機能を説明しました。

複数の AWS アカウントへのアクセスを容易にすることができるため、ぜひ使ってみてください。

明日 (3/11) は 川原征大 の「Amazon GuardDuty」の予定です。楽しみですね!