Strata を使用するように Azure Active Directory B2C を構成するためのチュートリアル
このチュートリアルでは、オンプレミス アプリケーションの保護に役立つ Strata Maverics Identity Orchestrator と Azure Active Directory B2C (Azure AD B2C) を統合する方法について説明します。 ID システムに接続され、ユーザーと資格情報が移行され、ポリシーと構成が同期され、認証とセッション管理が抽象化されます。 Strata を使用して、アプリケーションを書き直すことなく、レガシから Azure AD B2C に移行します。
このソリューションには次の利点があります。
-
オンプレミスのハイブリッド アプリへのお客様によるシングル サインオン (SSO) - Azure AD B2C では、お客様が Maverics Identity Orchestrator を使用して SSO を行うことがサポートされます
- ユーザーは、Azure AD B2C または ID プロバイダー (IdP) でホストされているアカウントでサインインします
- Maverics を使用すると、Symantec SiteMinder などの従来の ID システムによって保護されてきたアプリに対する SSO が保証されます
- 標準 SSO をアプリに拡張する - Azure AD B2C を使用してユーザー アクセスを管理し、Maverics Identity Orchestrator Security Assertion Markup Language (SAML) または OpenID Connect (OIDC) コネクタに対する SSO を有効にします
- 簡単な構成 - Maverics Identity Orchestrator SAML または OIDC コネクタを Azure AD B2C に接続します
前提条件
作業を開始するには、以下が必要です。
Azure サブスクリプション
- お持ちでない場合は、Azure 無料アカウントを取得できます
- お使いの Azure サブスクリプションにリンクされている Azure AD B2C テナント
- Maverics Identity Orchestrator で使用されるシークレットを格納するための Azure Key Vault のインスタンス。 Azure AD B2C またはその他の属性プロバイダー (ライトウェイト ディレクトリ アクセス プロトコル (LDAP) のディレクトリやデータベースなど) に接続します。
- Azure 仮想マシン (VM) またはオンプレミス サーバーで実行されている Maverics Identity Orchestrator のインスタンス。 ソフトウェアとドキュメントを入手するには、strata.io の Contact Strata Identity にアクセスしてください。
- Azure AD B2C に移行するオンプレミスのアプリケーション
シナリオの説明
Maverics Identity Orchestrator の統合には、次のコンポーネントが含まれています。
-
Azure AD B2C - ユーザー資格情報を検証する承認サーバー
- 認証済みユーザーは、Azure AD B2C ディレクトリ内のローカル アカウントを使用して、オンプレミスのアプリにアクセスします
- 外部のソーシャルまたはエンタープライズ ID プロバイダー (IdP): OIDC プロバイダー、Facebook、Google、または GitHub
- Strata Maverics Identity Orchestrator: HTTP ヘッダーを介してアプリに ID を渡すユーザー サインオン サービス
次のアーキテクチャの図に、この実装を示します。
- ユーザーが、オンプレミスでホストされているアプリケーションへのアクセスを要求します。 アプリケーションに対する要求が、プロキシである Maverics Identity Orchestrator に送られます。
- Orchestrator によって、ユーザーの認証状態が確認されます。 セッション トークンがないか、またはトークンが無効である場合、ユーザーは認証のために Azure AD B2C に移動します。
- Azure AD B2C によって、構成されているソーシャル IdP に認証要求が送信されます。
- IdP によってユーザーに資格情報の入力が求められます。 多要素認証 (MFA) が必要になる場合があります。
- IdP によって、認証応答が Azure AD B2C に送信されます。 ユーザーは、Azure AD B2C ディレクトリにローカル アカウントを作成できます。
- Azure AD B2C によって、Azure AD B2C テナントでの Orchestrator アプリの登録時に指定されたエンドポイントにユーザー要求が送信されます。
- Orchestrator によって、アクセス ポリシーが評価され、アプリに転送される HTTP ヘッダーの属性値が計算されます。 Orchestrator によって、他の属性プロバイダーが呼び出され、ヘッダー値を設定するための情報が取得される場合があります。 Orchestrator によって、アプリに要求が送信されます。
- これで、ユーザーが認証され、アプリにアクセスできるようになりました。
Maverics Identity Orchestrator
ソフトウェアとドキュメントを入手するには、strata.io の Contact Strata Identity にアクセスしてください。 Orchestrator の前提条件を判別します。 インストールして構成します。
Azure AD B2C テナントを構成する
次の手順では、以下の情報を記録します。
- テナント名と識別子
- クライアント ID
- クライアント シークレット
- 構成済みの要求
- リダイレクト URI
- Azure AD B2C テナントで Azure Active Directory B2C に Web アプリケーションを登録します。
- Microsoft MS Graph API のアクセス許可をアプリケーションに付与します。 アクセス許可を使用します:
offline_access
、openid
。 - Orchestrator の Azure AD B2C コネクタ構成の
oauthRedirectURL
パラメーターと一致するリダイレクト URI を追加します (https://example.com/oidc-endpoint
など)。 - Azure Active Directory B2C でユーザー フローとカスタム ポリシーを作成します。
- Azure Active Directory B2C テナントに ID プロバイダーを追加します。 ローカル アカウント、ソーシャル アカウント、またはエンタープライズ アカウントを使用してユーザーをサインインさせます。
- サインアップ中に収集される属性を定義します。
- Orchestrator インスタンスによってアプリケーションに返される属性を指定します。
注意
Orchestrator では、Azure AD B2C から返された要求の属性が使用され、接続されている ID システム (LDAP ディレクトリやデータベースなど) から属性を取得できます。 これらの属性は、HTTP ヘッダーにあり、上流のオンプレミス アプリケーションに送信されます。
Maverics Identity Orchestrator を構成する
Orchestrator インスタンスを構成するには、次のセクションの手順に従います。
Maverics Identity Orchestrator サーバーの要件
Orchestrator インスタンスは、オンプレミスまたはパブリック クラウド インフラストラクチャ (Azure、AWS、GCP などのプロバイダーが提供する) 上の任意のサーバーで実行できます。
- オペレーティング システム: REHL 7.7 以上、CentOS 7+
- ディスク: 10 GB (小)
- メモリ: 16 GB
- ポート: 22 (SSH/SCP)、443、80
- root アクセス: インストール/管理タスク用
-
Maverics Identity Orchestrator:
systemd
の下でユーザーmaverics
として実行されます - ネットワーク エグレス: Microsoft Entra テナントに到達できる Maverics Identity Orchestrator をホストしているサーバーから
Maverics Identity Orchestrator をインストールする
最新の Maverics RPM パッケージを入手します。
Maverics をインストールするシステムにパッケージを配置します。 リモート ホストにコピーする場合は、SSH scp を使用します。
次のコマンドを実行します。 ファイル名を使用して
maverics.rpm
を置き換えます。sudo rpm -Uvf maverics.rpm
既定では、Maverics は
/usr/local/bin
ディレクトリにあります。Maverics は
systemd
の下でサービスとして実行されます。Maverics サービスが実行されていることを確認するには、次のコマンドを実行します。
sudo service maverics status
次の (または同様の) メッセージが表示されます。
Redirecting to /bin/systemctl status maverics.service
maverics.service - Maverics
Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
Main PID: 330772 (maverics)
Tasks: 5 (limit: 11389)
Memory: 14.0M
CGroup: /system.slice/maverics.service
└─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml
注意
Maverics を起動できない場合は、次のコマンドを実行します。
journalctl --unit=maverics.service --reverse
最新のログ エントリが出力に表示されます。
-
/etc/maverics
ディレクトリに既定のmaverics.yaml
ファイルが作成されます。 - アプリケーションを保護するように Orchestrator を構成します。
- Azure AD B2C と統合し、保管します。
- Azure Key Vault からシークレットを取得します。
- Orchestrator が構成を読み取る場所を定義します。
環境変数を使用して構成を設定する
環境変数を使用して Orchestrator インスタンスを構成します。
MAVERICS_CONFIG
この環境変数によって、使用する YAML 構成ファイルと、スタートアップ時または再起動時の検索場所が Orchestrator インスタンスに指示されます。
/etc/maverics/maverics.env
に環境変数を設定します。
Orchestrator の TLS 構成を作成する
maverics.yaml
の tls
フィールドによって、Orchestrator インスタンスで使用されるトランスポート層のセキュリティ構成が宣言されます。 コネクタでは、TLS オブジェクトと Orchestrator サーバーを使用します。
maverics
キーは、Orchestrator サーバー用に予約されています。 他のキーを使用して、コネクタに TLS オブジェクトを挿入します。
tls:
maverics:
certFile: /etc/maverics/maverics.cert
keyFile: /etc/maverics/maverics.key
Azure AD B2C コネクタを構成する
Orchestrator は、コネクタを使用して認証および属性プロバイダーと統合されます。 Orchestrator App Gateway は、認証と属性のプロバイダーとして Azure AD B2C コネクタを使用します。 Azure AD B2C では、認証のためにソーシャル IdP が使用され、Orchestrator に属性が提供されます。属性は、HTTP ヘッダーの要求セットで渡されます。
コネクタの構成は、Azure AD B2C テナントに登録されているアプリに対応しています。
- アプリ構成から、クライアント ID、クライアント シークレット、リダイレクト URI をテナントにコピーします。
- コネクタ名を入力します (例:
azureADB2C
)。 - コネクタ
type
をazure
に設定します。 - コネクタ名をメモします。 この値は、他の構成パラメーターで使用します。
-
authType
をoidc
に設定します。 -
oauthClientID
パラメーターには、コピーしたクライアント ID を設定します。 -
oauthClientSecret
パラメーターには、コピーしたクライアント シークレットを設定します。 -
oauthRedirectURL
パラメーターには、コピーしたリダイレクト URI を設定します。 - Azure AD B2C の OIDC コネクタでは、OIDC エンドポイントを使用して、URL や署名キーなどのメタデータが検出されます。 テナント エンドポイントには、
oidcWellKnownURL
を使用します。
connectors:
name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
認証プロバイダーとして Azure AD B2C を定義する
認証プロバイダーによって、アプリ リソース要求中に有効なセッションを提示しないユーザーの認証が決定されます。 Azure AD B2C テナント構成では、他の認証ポリシーを適用するときに、ユーザーに資格情報の入力が求められる方法が決定されます。 たとえば、認証を完了するために 2 番目の要素を要求し、認証の後に Orchestrator App Gateway に返す内容を決定します。
authProvider
の値は、コネクタの name
値と一致している必要があります。
authProvider: azureADB2C
Orchestrator App Gateway を使用してオンプレミスのアプリを保護する
Orchestrator App Gateway 構成では、Azure AD B2C によってアプリケーションが保護される方法と、ユーザーがアプリにアクセスする方法を宣言します。
- App Gateway 名を入力します。
-
location
を設定します。 この例ではアプリ root/
を使用しています。 - 保護されるアプリケーションを
upstream
で定義します。 host:port 規則を使用します:https://example.com:8080
。 - エラー ページおよび認可されていないページの値を設定します。
- アプリケーションが認証と制御を確立するための HTTP ヘッダー名と属性値を定義します。 通常、ヘッダー名はアプリ構成に対応しています。 属性値には、コネクタの名前空間が付加されます。 この例では、Azure AD B2C から返された値には、プレフィックスとしてコネクタ名
azureADB2C
が付加されます。 サフィックスは、必要な値を持つ属性名です (given_name
など)。 - ポリシーを設定します。
allowUnauthenticated
、allowAnyAuthenticated
、およびallowIfAny
の 3 つのアクションが定義されています。 各アクションはresource
に関連付けられます。 ポリシーはそのresource
に対して評価されます。
注意
headers
と policies
は、JavaScript または GoLang サービス拡張機能を使用して、任意のロジックを実装します。
appgateways:
- name: Sonar
location: /
upstream: https://example.com:8080
errorPage: https://example.com:8080/sonar/error
unauthorizedPage: https://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
シークレット プロバイダーとしての Azure Key Vault
Orchestrator が Azure AD B2C およびその他の ID システムに接続するために使用されるシークレットをセキュリティで保護します。 Maverics では、maverics.yaml
からシークレットがプレーンテキストで読み込まれますが、このチュートリアルでは、シークレット プロバイダーとして Azure Key Vault を使用します。
「クイック スタート: Azure portal を使用して Azure Key Vault との間でシークレットの設定と取得を行う」の手順に従ってください。 シークレットをコンテナーに追加し、各シークレットの SECRET NAME
をメモします。 たとえば、AzureADB2CClientSecret
のようにします。
maverics.yaml
構成ファイルで値をシークレットとして宣言するには、シークレットを山かっこで囲みます。
connectors:
- name: AzureADB2C
type: azure
oauthClientID: <AzureADB2CClientID>
oauthClientSecret: <AzureADB2CClientSecret>
山かっこ内の値は、Azure Key Vault のシークレットに付けられた SECRET NAME
に対応している必要があります。
Azure Key Vault からシークレットを読み込むには、azure-credentials.json ファイルにある資格情報で /etc/maverics/maverics.env
ファイルに環境変数 MAVERICS_SECRET_PROVIDER
を設定します。 次のパターンを使用します。
MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'
構成を完了する
次の情報は、Orchestrator の構成がどのように表示されるかを示しています。
version: 0.4.2
listenAddress: ":443"
tls:
maverics:
certFile: certs/maverics.crt
keyFile: certs/maverics.key
authProvider: azureADB2C
connectors:
- name: azureADB2C
type: azure
oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
oauthRedirectURL: https://example.com/oidc-endpoint
oauthClientID: <azureADB2CClientID>
oauthClientSecret: <azureADB2CClientSecret>
authType: oidc
appgateways:
- name: Sonar
location: /
upstream: http://example.com:8080
errorPage: http://example.com:8080/sonar/accessdenied
unauthorizedPage: http://example.com:8080/sonar/accessdenied
headers:
SM_USER: azureADB2C.sub
firstname: azureADB2C.given_name
lastname: azureADB2C.family_name
policies:
- resource: ~ \.(jpg|png|ico|svg)
allowUnauthenticated: true
- resource: /
allowAnyAuthenticated: true
- resource: /sonar/daily_deals
allowIfAny:
azureADB2C.customAttribute: Rewards Member
フローをテストする
- オンプレミスのアプリケーション URL () に移動し
https://example.com/sonar/dashboard
ます。 - Orchestrator によって、ユーザー フロー ページにリダイレクトされます。
- 一覧から IdP を選択します。
- IdP で必要な場合は、MFA トークンを含む資格情報を入力します。
- Azure AD B2C にリダイレクトされ、それによってアプリの要求が Orchestrator のリダイレクト URI に転送されます。
- Orchestrator によって、ポリシーが評価され、ヘッダーが計算されます。
- 要求されたアプリケーションが表示されます。