規則グループと規則
更新日: 2015 年 6 月 19 日
適用先:Azure
Microsoft Azure Active Directory Access Control (Access Control サービスまたは ACS とも呼ばれます) では、規則グループは、ID プロバイダーから証明書利用者アプリケーションに渡される ID 要求を定義する名前付き要求規則のセットです。 ACS では、規則グループは証明書利用者アプリケーションに関連付けられます。 1 つの規則グループは、1 つ以上の証明書利用者アプリケーションで使用することができ、1 つの証明書利用者アプリケーションは 1 つ以上の規則グループを参照できます。
ACS は、ID プロバイダーからトークン要求またはトークンを受信すると、証明書利用者アプリケーションに関連付けられているすべてのルール グループを介して実行され、トークン内の要求を処理します。 すべてのルール グループは、各ルール グループ内のすべての規則なので (順序は関係ありません)、同時に実行されます。 実行が完了した後で規則によって新しい要求が発行された場合、証明書利用者アプリケーションと関連付けられているルール グループが再び実行されます。 ルールとルール グループの実行プロセスは、実行プロセスが完了した後、または ACS が 10 回実行を完了した後 (どちらか早い方) に新しい要求が発行されない場合に停止します。
ルール グループとルールは、ACS 管理ポータルを使用して手動で作成および編集することも、ACS 管理サービスを使用してプログラムで編集することもできます。
ACS 管理ポータルでの規則の構成
ルール グループの作成
ACS 管理ポータルで新しい証明書利用者アプリケーションのプロパティを追加して構成する場合は、ACS 管理ポータルの [証明書利用者アプリケーションの追加] ページで既定で [ 新しい規則グループの作成 ] オプションがオンになっているため、この証明書 利用者アプリケーション に関連付けられている規則グループを作成することもできます。 このオプションをオンのままにして、新しい証明書利用者アプリケーション用の既定のルール グループを作成することを強くお勧めします (詳細については、 証明書利用者アプリケーションの「ルール グループ」を参照してください)。 ACS 管理ポータルの [ルール グループ] セクションを使用して 、ルール グループ を追加することもできます。 その後、[証明書利用者アプリケーションの追加] ページを使用して証明書利用者アプリケーションを追加するときに、既存のルール グループと関連付けることができます。
規則の生成
ルール グループが作成されたら、ACS 管理ポータルの [ルール グループの編集] ページを使用して、ルールを自動的に生成できます。 規則を自動的に生成する場合は、規則生成対象の ID プロバイダーの選択を求められます。 ルール グループが 1 つ以上の証明書利用者アプリケーションにリンクされていると、証明書利用者アプリケーションによって使用される ID プロバイダーが既定で選択されます。
注意
WS-Federation ID プロバイダーの場合、ID プロバイダーの WS-Federation メタデータで提供される各要求種類に対して規則が作成されて、この規則は要求の種類および値をパススルーします。 他の ID プロバイダーの場合、パススルー規則は事前に決定されている要求種類の一覧に基づいて生成されます。
規則の表示、追加、編集
ACS 管理ポータルの [ ルール グループの編集] ページには、テーブル内のすべてのルールが表示されます。この列には、ルールの 出力要求 、 要求発行者 (ID プロバイダーまたは ACS の場合があります)、 説明が含まれます。
表で特定の規則をクリックすると、[要求規則の編集] ページに移動し、規則を編集できます。 新しい規則を手動で追加するには、[追加] をクリックします。
要求規則
要求規則は、ACS が入力要求を出力要求に変換する方法のロジックを記述します。 規則は、証明書利用者アプリケーションに関連付けられている規則グループ内に含まれており、アプリケーションに対して ACS によってトークンが発行されるたびに実行されます。 ルール グループに規則が含まれない場合、証明書利用者アプリケーションに対してトークンは発行されません。 通常、証明書利用者アプリケーションに発行する必要のあるすべての要求種類に対して 1 つの規則が必要です。 規則を 1 つだけ作成し、すべての要求の種類と値のパススルーにそれを使用できます。 ただし、要求種類ごとの規則を使用すると、セキュリティが向上し、アプリケーションに渡されるデータをきめ細かく制御できます。
ACS では、要求の種類、発行者、または値を変更せずに、ID プロバイダーまたはクライアントから受け取った要求を証明書利用者アプリケーションに渡す規則を構成できます。 このような規則はパススルー規則と呼ばれます。 たとえば、Windows Live ID (Microsoft アカウント) によって発行されたトークンには、nameidentifier 要求の種類が含まれます。 証明書利用者アプリケーションにこの要求を変更せずに渡すには、要求発行者からの入力 nameidentifier 要求の種類を処理し、Live ID をWindowsし、同じ出力要求を作成するパススルー規則を構成する必要があります。
次の表では、Contoso.com という名前の架空の AD FS 2.0 ID プロバイダーからパススルーされる要求を示します。
入力要求 | 出力要求 | ||||
---|---|---|---|---|---|
発行者 |
Type |
Value |
発行者 |
Type |
Value |
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
123456789 |
Access Control Service |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
123456789 |
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
john@contoso.com |
Access Control Service |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress |
john@contoso.com |
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name |
John Doe |
Access Control Service |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name |
John Doe |
ACS ルール エンジンでは、要求発行者、入力要求の種類、および値に基づいて、入力要求をまったく異なる出力要求に変換する機能も提供されます。 つまり、ACS ルール エンジンを使用すると、トークンに含まれる要求を追加、削除、または変更することで、入力トークンを異なる出力トークンに変換できます。 この形式の要求変換により、ACS は要求入力値に基づいて基本的な承認を実装できます。 次の例では、入力要求 “nameidentifier” が特定の値と一致する場合に出力される値が “administrator” である要求種類 “role” を示します。
入力要求 | 出力要求 | ||||
---|---|---|---|---|---|
発行者 |
Type |
Value |
発行者 |
Type |
Value |
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
123456789 |
Access Control Service |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
administrator |
ACS ルール エンジンは、2 つの入力要求の組み合わせに基づいて出力要求を作成する機能も提供します。 次の例では、Contoso.com からの入力要求 “nameidentifier” および “role” の両方が特定の値と一致する場合、出力要求は種類 “action” で値 “write” になります。 2 つの入力要求が規則で指定されている場合、出力要求を生成するには両方の値が一致する必要があります。
入力要求 | 出力要求 | ||||
---|---|---|---|---|---|
発行者 |
Type |
Value |
発行者 |
Type |
Value |
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
123456789 |
Access Control Service
|
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/action
|
書き込み
|
Contoso.com |
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/role |
administrator |
ルールを使用してトークン変換を実装する方法の詳細と手順については、「 方法: ルールを使用してトークン変換ロジックを実装する」を参照してください。
ACS 管理ポータルで新規または既存の要求規則を追加または編集する場合は、次の設定を構成する必要があります。
規則の条件 (if) – 入力要求の追加
このセクションには、規則が出力要求を発行するために true である必要がある条件が含まれます。 このような条件には次のものが含まれます。
要求発行者 — 入力要求を発行したエンティティを参照します。 これには、構成済みの ID プロバイダー (たとえば) または ACS を指定できます。 ACS は、入力要求がサービス ID から取得された場合、または入力要求が別の要求規則から取得された場合に発行者です。 詳細については、「 サービス ID」を参照してください。
入力要求の種類 — 要求発行者から受け取った入力要求種類を参照します。 たとえば、"nameidentifier" の完全な要求の種類は https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier. このフィールドのオプションは、次のとおりです。
任意 — 任意の要求種類を発行者から受け取った場合、true を返します。
種類を選択 — 入力要求種類がドロップダウン メニューで選択されている種類と一致する場合、true を返します。 このメニューには、選択した要求の発行者が使用できる要求の種類が読み込まれます。
種類を入力 — 入力要求種類がフィールドに入力された値と正確に一致する場合、true を返します。
重要
このフィールドは、大文字と小文字を区別します。
入力要求の値 — 受け取った入力要求の値を参照します。 たとえば、"nameidentifier" の要求の種類に電子メール アドレスを値として使用し、このフィールドを特定の電子メール アドレスの確認用に使用することができます。 このフィールドのオプションは、次のとおりです。
任意 — 任意の要求値を発行者から受け取った場合、true を返します。
値を入力 — 入力要求種類がフィールドに入力された値と正確に一致する場合、true を返します。 このオプションでは、特定の入力要求種類が選択されているか、または [入力要求の種類] フィールドに入力されている必要があります。
重要
このフィールドは、大文字と小文字を区別します。
規則の条件 (if) – 2 番目の入力要求の追加
2 番目の要求を規則に追加するには、[2 番目の入力要求の追加] をクリックします。 これにより、以下に示す追加の条件を指定できます。 入力要求が 2 つある規則では、すべての条件が true でないと出力要求が生成されないことに注意してください。
要求発行者 — 2 番目の入力要求を発行したエンティティを参照します。 これは、最初の要求に対して選択されたのと同じ ID プロバイダーでも、ACS でもかまいません。 ACS を選択して、ルール処理中に他の要求規則から生成された要求を指定します。
重要
1 番目の要求と 2 番目の要求に異なる ID プロバイダーを選択することはできません。規則として、一度に処理できるのは 1 つの ID プロバイダーから発行された 1 つのトークンだけです。
入力要求の種類 — 要求発行者から受け取った入力要求種類を参照します。 たとえば、"nameidentifier" の完全な要求の種類は https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier. このフィールドのオプションは、次のとおりです。
種類を選択 — 入力要求種類がドロップダウン メニューで選択されている種類と一致する場合、true を返します。 このメニューには、選択した要求の発行者が使用できる要求の種類が読み込まれます。
種類を入力 — 入力要求種類がフィールドに入力された値と正確に一致する場合、true を返します。
重要
このフィールドは、大文字と小文字を区別します。
入力要求の値 — 受け取った入力要求の値を参照します。 たとえば、"nameidentifier" の要求の種類に電子メール アドレスを値として使用し、このフィールドを特定の電子メール アドレスの確認用に使用することができます。 入力要求種類がフィールドに入力された値と正確に一致する場合、true を返します。
重要
このフィールドは、大文字と小文字を区別します。
規則のアクション (then)
このセクションでは、規則の If セクションの条件が true の場合に ACS によって発行される出力要求を指定します。 出力要求のオプションは次のとおりです。
出力要求の種類: ACS によって発行される要求の種類。 このフィールドのオプションは、次のとおりです。
入力要求の種類のパススルー — 入力要求と同じ種類の出力要求を発行します。
種類を選択 — 指定した種類の出力要求を発行します。 ドロップダウン メニューには一般的な要求種類の一覧が含まれます。
種類を入力 — 入力した種類の要求を発行します。 出力要求が SAML トークンに存在する場合、この値は URI (たとえば https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier) である必要があります。
重要
このフィールドは、大文字と小文字を区別します。
出力要求値:ACS によって発行された出力要求の値を参照します。 このフィールドのオプションは、次のとおりです。
入力要求の値のパススルー - 入力要求の値と同じ値を持つ出力要求を発行します。
値を入力 - このフィールドに入力した値を持つ要求を発行します。 このオプションでは、特定の入力要求の種類が選択されているか、または [出力要求の種類] フィールドに入力されている必要があります。
重要
このフィールドは、大文字と小文字を区別します。
規則の情報
このセクションを使用して、規則の説明を作成できます。
注意
ACS では、生成されたルールに対してルールの説明は自動的に作成されません。
ACS 管理サービスでの規則の構成
Access Control名前空間内の規則は、ACS 管理サービスを使用してプログラムで構成できます。 ASP.NET を使用してルールを構成する方法の例については、「コード サンプル: 管理サービス」を参照してください。 ACS 管理サービスを使用してルールを構成する場合に考慮すべき重要な項目を次に示します。
ルール グループ内のルールを編集および削除する場合は、まず、そのルール グループ内のすべてのルールについて ACS にクエリを実行し、クエリが返すルール ID を使用して編集操作または削除操作を実行することをお勧めします。 将来の操作のために管理サービスから返された ID を保管しておくことはお勧めできません。ID が維持されている保証はありません。
規則作成の自動再試行ロジックを作成する場合 (タイムアウトの場合など)、最初に現在のルール グループに同じ規則が存在することをクエリしてから、2 回目の追加を試みることをお勧めします。