Azure PowerShell を使用して Azure AD B2C のカスタム ポリシーを管理する

Azure PowerShell には、Azure AD B2C テナントに対するコマンド ラインベースおよびスクリプトベースのカスタム ポリシー管理用コマンドレットがいくつか用意されています。 Azure AD PowerShell モジュールを使用して、次のことを行う方法について説明します。

  • Azure AD B2C テナントのカスタム ポリシーを一覧表示する
  • テナントからポリシーをダウンロードする
  • ポリシーの内容を上書きして既存のポリシーを更新する
  • Azure AD B2C テナントに新しいポリシーをアップロードする
  • テナントからカスタム ポリシーを削除する

前提条件

PowerShell セッションを B2C テナントに接続する

Azure AD B2C テナントでカスタム ポリシーを使用するには、まず、Connect-AzureAD コマンドを使用して、PowerShell セッションをテナントに接続する必要があります。

次のコマンドを実行します。{b2c-tenant-name} を Azure AD B2C テナントの名前で置き換えてください。 ディレクトリ内で B2C IEF ポリシー管理者ロールが割り当てられているアカウントを使用してサインインします。

Connect-AzureAD -Tenant "{b2c-tenant-name}.onmicrosoft.com"

サインインが成功したことを示すコマンド出力の例:

PS C:\> Connect-AzureAD -Tenant "contosob2c.onmicrosoft.com"

Account               Environment TenantId                             TenantDomain                 AccountType
-------               ----------- --------                             ------------                 -----------
azureuser@contoso.com AzureCloud  00000000-0000-0000-0000-000000000000 contosob2c.onmicrosoft.com   User

テナント内のすべてのカスタム ポリシーを一覧表示する

カスタム ポリシーを検出することで、Azure AD B2C 管理者はビジネス ロジックを確認および管理したり、運用に追加したりできます。 Azure AD B2C テナント内のカスタム ポリシーの ID 一覧を取得するには、Get-AzureADMSTrustFrameworkPolicy コマンドを使用します。

Get-AzureADMSTrustFrameworkPolicy

コマンドの出力例:

PS C:\> Get-AzureADMSTrustFrameworkPolicy

Id
--
B2C_1A_TrustFrameworkBase
B2C_1A_TrustFrameworkExtensions
B2C_1A_signup_signin
B2C_1A_ProfileEdit
B2C_1A_PasswordReset

ポリシーをダウンロードする

ポリシー ID の一覧を確認したら、Get-AzureADMSTrustFrameworkPolicy を使用して、特定のポリシーをターゲットにして、その内容をダウンロードできます。

Get-AzureADMSTrustFrameworkPolicy [-Id <policyId>]

この例では、ID B2C_1A_signup_signin のポリシーがダウンロードされます。

PS C:\> Get-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="contosob2c.onmicrosoft.com" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://contosob2c.onmicrosoft.com/B2C_1A_signup_signin" TenantObjectId="00000000-0000-0000-0000-000000000000">
  <BasePolicy>
    <TenantId>contosob2c.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
</TrustFrameworkPolicy>

ローカルでポリシーの内容を編集するには、-OutputFilePath 引数を使用してコマンドの出力をファイルにパイプ処理し、このファイルを任意のエディターで開きます。

出力をファイルに送信するコマンドの例:

# Download and send policy output to a file
Get-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -OutputFilePath C:\RPPolicy.xml

既存のポリシーを更新する

作成またはダウンロードしたポリシー ファイルを編集したら、Set-AzureADMSTrustFrameworkPolicy コマンドを使用して、更新済みポリシーを Azure AD B2C に発行できます。

Azure AD B2C テナントに既に存在するポリシーの ID を指定して Set-AzureADMSTrustFrameworkPolicy コマンドを発行すると、そのポリシーの内容が上書きされます。

Set-AzureADMSTrustFrameworkPolicy [-Id <policyId>] -InputFilePath <inputpolicyfilePath> [-OutputFilePath <outputFilePath>]

コマンドの例:

# Update an existing policy from file
Set-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -InputFilePath C:\B2C_1A_signup_signin.xml

その他の例については、Set-AzureADMSTrustFrameworkPolicy コマンド リファレンスを参照してください。

新しいポリシーをアップロードする

運用環境で実行されているカスタム ポリシーを変更する場合は、フォールバックまたは A/B テスト シナリオに対応するために、複数のバージョンのポリシーを発行することができます。 または、既存のポリシーのコピーを作成し、小さな変更をいくつか加えて修正し、別のアプリケーションで使用できるように新しいポリシーとしてアップロードすることもできます。

新しいポリシーをアップロードするには、New-AzureADMSTrustFrameworkPolicy コマンドを使用します。

New-AzureADMSTrustFrameworkPolicy -InputFilePath <inputpolicyfilePath> [-OutputFilePath <outputFilePath>]

コマンドの例:

# Add new policy from file
New-AzureADMSTrustFrameworkPolicy -InputFilePath C:\SignUpOrSignInv2.xml

カスタム ポリシーを削除する

クリーンな運用ライフ サイクルを維持するには、使用されていないカスタム ポリシーを定期的に削除することをお勧めします。 たとえば、新しいポリシー セットへの移行を実行し、新しいポリシーが機能することを確認したら、古いポリシー バージョンを削除することができます。 また、一連のカスタム ポリシーを発行しようとしてエラーが発生した場合は、失敗したリリースの一部として作成されたポリシーを削除した方がよい場合があります。

Remove-AzureADMSTrustFrameworkPolicy コマンドを使用して、テナントからポリシーを削除します。

Remove-AzureADMSTrustFrameworkPolicy -Id <policyId>

コマンドの例:

# Delete an existing policy
Remove-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin

ポリシーのアップロードのトラブルシューティング

新しいカスタム ポリシーの発行や既存ポリシーの更新を試みたときに、XML の書式設定が不適切であったり、ポリシー ファイルの継承チェーンにエラーがあったりすると、検証エラーが発生する可能性があります。

次の例では、無効な形式の XML を含む内容を使用してポリシーを更新しようとしています (簡潔にするために出力は切り詰められています)。

PS C:\> Set-AzureADMSTrustFrameworkPolicy -Id B2C_1A_signup_signin -InputFilePath C:\B2C_1A_signup_signin.xml
Set-AzureADMSTrustFrameworkPolicy : Error occurred while executing PutTrustFrameworkPolicy
Code: AADB2C
Message: Validation failed: 1 validation error(s) found in policy "B2C_1A_SIGNUP_SIGNIN" of tenant "contosob2c.onmicrosoft.com".Schema validation error found at line
14 col 55 in policy "B2C_1A_SIGNUP_SIGNIN" of tenant "contosob2c.onmicrosoft.com": The element 'OutputClaims' in namespace
'http://schemas.microsoft.com/online/cpim/schemas/2013/06' cannot contain text. List of possible elements expected: 'OutputClaim' in namespace
'http://schemas.microsoft.com/online/cpim/schemas/2013/06'.
...

カスタム ポリシーのトラブルシューティングの詳細については、「Azure AD B2C のカスタム ポリシーと Identity Experience Framework のトラブルシューティング」を参照してください。

次のステップ

PowerShell を使用して、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインの一環としてカスタム ポリシーをデプロイする方法の詳細については、Azure DevOps パイプラインからのカスタム ポリシーのデプロに関するページをご覧ください。