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 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 を使用した Azure AD B2C 統合アーキテクチャの図。

  1. ユーザーが、オンプレミスでホストされているアプリケーションへのアクセスを要求します。 アプリケーションに対する要求が、プロキシである Maverics Identity Orchestrator に送られます。
  2. Orchestrator によって、ユーザーの認証状態が確認されます。 セッション トークンがないか、またはトークンが無効である場合、ユーザーは認証のために Azure AD B2C に移動します。
  3. Azure AD B2C によって、構成されているソーシャル IdP に認証要求が送信されます。
  4. IdP によってユーザーに資格情報の入力が求められます。 多要素認証 (MFA) が必要になる場合があります。
  5. IdP によって、認証応答が Azure AD B2C に送信されます。 ユーザーは、Azure AD B2C ディレクトリにローカル アカウントを作成できます。
  6. Azure AD B2C によって、Azure AD B2C テナントでの Orchestrator アプリの登録時に指定されたエンドポイントにユーザー要求が送信されます。
  7. Orchestrator によって、アクセス ポリシーが評価され、アプリに転送される HTTP ヘッダーの属性値が計算されます。 Orchestrator によって、他の属性プロバイダーが呼び出され、ヘッダー値を設定するための情報が取得される場合があります。 Orchestrator によって、アプリに要求が送信されます。
  8. これで、ユーザーが認証され、アプリにアクセスできるようになりました。

Maverics Identity Orchestrator

ソフトウェアとドキュメントを入手するには、strata.io の Contact Strata Identity にアクセスしてください。 Orchestrator の前提条件を判別します。 インストールして構成します。

Azure AD B2C テナントを構成する

次の手順では、以下の情報を記録します。

  • テナント名と識別子
  • クライアント ID
  • クライアント シークレット
  • 構成済みの要求
  • リダイレクト URI
  1. Azure AD B2C テナントで Azure Active Directory B2C に Web アプリケーションを登録します
  2. Microsoft MS Graph API のアクセス許可をアプリケーションに付与します。 アクセス許可を使用します: offline_accessopenid
  3. Orchestrator の Azure AD B2C コネクタ構成の oauthRedirectURL パラメーターと一致するリダイレクト URI を追加します (https://example.com/oidc-endpoint など)。
  4. Azure Active Directory B2C でユーザー フローとカスタム ポリシーを作成します
  5. Azure Active Directory B2C テナントに ID プロバイダーを追加します。 ローカル アカウント、ソーシャル アカウント、またはエンタープライズ アカウントを使用してユーザーをサインインさせます。
  6. サインアップ中に収集される属性を定義します。
  7. 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 をインストールする

  1. 最新の Maverics RPM パッケージを入手します。

  2. Maverics をインストールするシステムにパッケージを配置します。 リモート ホストにコピーする場合は、SSH scp を使用します。

  3. 次のコマンドを実行します。 ファイル名を使用して maverics.rpm を置き換えます。

    sudo rpm -Uvf maverics.rpm

    既定では、Maverics は /usr/local/bin ディレクトリにあります。

  4. Maverics は systemd の下でサービスとして実行されます。

  5. Maverics サービスが実行されていることを確認するには、次のコマンドを実行します。

    sudo service maverics status

  6. 次の (または同様の) メッセージが表示されます。

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

最新のログ エントリが出力に表示されます。

  1. /etc/maverics ディレクトリに既定の maverics.yaml ファイルが作成されます。
  2. アプリケーションを保護するように Orchestrator を構成します。
  3. Azure AD B2C と統合し、保管します。
  4. Azure Key Vault からシークレットを取得します。
  5. Orchestrator が構成を読み取る場所を定義します。

環境変数を使用して構成を設定する

環境変数を使用して Orchestrator インスタンスを構成します。

MAVERICS_CONFIG

この環境変数によって、使用する YAML 構成ファイルと、スタートアップ時または再起動時の検索場所が Orchestrator インスタンスに指示されます。 /etc/maverics/maverics.env に環境変数を設定します。

Orchestrator の TLS 構成を作成する

maverics.yamltls フィールドによって、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 テナントに登録されているアプリに対応しています。

  1. アプリ構成から、クライアント ID、クライアント シークレット、リダイレクト URI をテナントにコピーします。
  2. コネクタ名を入力します (例: azureADB2C)。
  3. コネクタ typeazure に設定します。
  4. コネクタ名をメモします。 この値は、他の構成パラメーターで使用します。
  5. authTypeoidc に設定します。
  6. oauthClientID パラメーターには、コピーしたクライアント ID を設定します。
  7. oauthClientSecret パラメーターには、コピーしたクライアント シークレットを設定します。
  8. oauthRedirectURL パラメーターには、コピーしたリダイレクト URI を設定します。
  9. 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 によってアプリケーションが保護される方法と、ユーザーがアプリにアクセスする方法を宣言します。

  1. App Gateway 名を入力します。
  2. location を設定します。 この例ではアプリ root / を使用しています。
  3. 保護されるアプリケーションを upstream で定義します。 host:port 規則を使用します: https://example.com:8080
  4. エラー ページおよび認可されていないページの値を設定します。
  5. アプリケーションが認証と制御を確立するための HTTP ヘッダー名と属性値を定義します。 通常、ヘッダー名はアプリ構成に対応しています。 属性値には、コネクタの名前空間が付加されます。 この例では、Azure AD B2C から返された値には、プレフィックスとしてコネクタ名 azureADB2C が付加されます。 サフィックスは、必要な値を持つ属性名です (given_name など)。
  6. ポリシーを設定します。 allowUnauthenticatedallowAnyAuthenticated、および allowIfAny の 3 つのアクションが定義されています。 各アクションは resource に関連付けられます。 ポリシーはその resource に対して評価されます。

注意

headerspolicies は、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

フローをテストする

  1. オンプレミスのアプリケーション URL () に移動し https://example.com/sonar/dashboard ます。
  2. Orchestrator によって、ユーザー フロー ページにリダイレクトされます。
  3. 一覧から IdP を選択します。
  4. IdP で必要な場合は、MFA トークンを含む資格情報を入力します。
  5. Azure AD B2C にリダイレクトされ、それによってアプリの要求が Orchestrator のリダイレクト URI に転送されます。
  6. Orchestrator によって、ポリシーが評価され、ヘッダーが計算されます。
  7. 要求されたアプリケーションが表示されます。

次のステップ