認可は、ユーザーに付与するアクセス権を制御するプロセスです。認可ポリシーを使用して、認証されたユーザーにリソースへのアクセスを許可するかどうかを指定できます。たとえば、saml.acme.com などの保護されたリソースで、saml.acme.com/admin ページを使用するアクセスをユーザーに制限できます。このセクションでは、対応するルールとアクションによる認可ポリシーの構成について説明します。

SAML 認可ポリシー

SAML 認可のフローを次の図に示します。



SAML 認可ルール

SAML 認可では、次の一致タイプがサポートされます。

一致タイプ

説明

属性

IdP からの SAML 応答に含まれる属性

パス

URI パス

Host ヘッダー

受信要求に表示される Host ヘッダー

メソッド

HTTP 要求方法(GET、POST など)。

注:

Host ヘッダーとパスは、大文字と小文字を区別するように構成できます。

SAML 認可では、次のアクション タイプがサポートされます。

アクション タイプ

説明

allow_access

認可ポリシー ルールに一致した場合にアクセスを許可します。

close_connection

認可ポリシー ルールに一致した場合に接続を終了します。

http_local_response

認可ポリシー ルールに一致した場合に HTTP ローカル応答を送信します。

次のシナリオについて考えます。
  1. aviadmin パスは、E メールの属性が [email protected] のユーザーにのみ許可する必要があります。

  2. このパスでは GET 要求のみが許可されます。

  3. Host ヘッダーが admin.acme.com の要求は、このパスにのみアクセスできます。

アクセスを許可するのは、上記の条件を満たしている場合のみです。それ以外の場合は、403 応答コードをユーザーに返す必要があります。

認可ポリシーの構成は次のとおりです。

+------------------------------+----------------------------------------+
| Field                        | Value                                          +------------------------------+----------------------------------------+
| uuid                         | ssopolicy-86fb0825-8d1f-45f4-a56b-f8bf8adf9a46 |
| name                         | sso1                                           
| authentication_policy        |                                                
|   default_auth_profile_ref   | saml-idp-authz                                
| authorization_policy         |                                                
|   authz_rules[1]             |                                                
|     name                     | Demo_rule                                          
|     index                    | 1                                              
|     enable                   | True                                           
|     match                    |                                                
|       attr_matches[1]        |                                                
|         attribute_name       | email                                          
|         attribute_value_list |                                                
|           match_criteria     | EQUALS                                         
|           match_str[1]       | [email protected]                          
|       path                   |                                                
|         match_criteria       | EQUALS                                         
|         match_case           | INSENSITIVE                                    
|         match_str[1]         | /aviadmin                                      
|       host_hdr               |                                                
|         match_criteria       | HDR_EQUALS                                     
|         match_case           | INSENSITIVE                                    
|         value[1]             | admin.acme.com                          
|       method                 |                                                
|         match_criteria       | IS_IN                                          
|         methods[1]           | HTTP_METHOD_GET                                
|     action                   |                                                
|       type                   | ALLOW_ACCESS                                   
|       status_code            | HTTP_RESPONSE_STATUS_CODE_403                  
|   authz_rules[2]             |                                                
|     name                     | Deny_rule                                          
|     index                    | 2                                              
|     enable                   | True                                           
|     match                    |                                                
|       path                   |                                                
|         match_criteria       | EQUALS                                         
|         match_case           | INSENSITIVE                                    
|         match_str[1]         | /aviadmin                                      
|     action                   |                                                
|       type                   | HTTP_LOCAL_RESPONSE                            
|       status_code            | HTTP_RESPONSE_STATUS_CODE_403                  
| type                         | SSO_TYPE_SAML                                  
| tenant_ref                   | admin                                          
+------------------------------+----------------------------------------+

この構成では、ルール名 Demo_rule は、すべての条件が満たされた場合にのみ出現し、アクセス権が付与されます。

Demo_rule のいずれかの条件が満たされない場合は、Deny_rule が出現しても、アクセスは拒否されます。アクションはルール(この場合は Deny_rule)で明示的に定義する必要があります。定義しないと、暗黙的に許可されます。

注:
  • 1 つのルール内に複数の条件がある場合は、AND 一致になります。複数のルールがある場合は、OR 一致になります。つまり、複数のルールが構成されていて、いずれかのルールが一致すれば、アクションが実行されます。ルール チェックの順序は、ルールのインデックスによって異なります。

  • status_code フィールドのデフォルト値は HTTP_RESPONSE_STATUS_CODE_403 です。これはアクションがローカル応答の場合にのみ適用されます。それ以外の、接続の終了やアクセスの許可などのアクションでは、状態コードは無視されます。

対応するルールとアクションを使用した認可ポリシーの構成

さまざまな種類の一致について例示します。使用事例や要件に基づいて、1 つの条件または複数の条件を選択できます。

SAML 認可ポリシーを構成するには、次の手順を実行します。

  1. IdP メタデータを含む認証ポリシーに認可プロファイルを適用します。たとえば、saml-idp-authz という認可プロファイルを構成します。

    [admin:controller]: > configure ssopolicy ssopolicy1
     [admin:controller]: ssopolicy> authentication_policy default_auth_profile_ref saml-idp-authz 
     [admin:controller]: ssopolicy:authentication_policy> save   
  2. [認可ポリシー モード] に移行します。

    [admin: controller]: ssopolicy> authorization_policy  
  3. 認可ポリシーのインデックス順に複数の認可ルールを構成します。rule1 という名前の認可ルールの構成例を次に示します。

    [admin:controller]: ssopolicy:authorization_policy> authz_rules name rule1
     New object being created
     [admin:controller]: ssopolicy:authorization_policy:authz_rules> 
  4. 上記の照合表で説明されている認可ポリシーの一致基準を選択します。次の例では、attr_matches 属性が一致基準として使用されています。

     [admin:controller]: ssopolicy:authorization_policy:authz_rules> match 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> attr_matches 
     New object being created 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:attr_matches>
     attribute_name         Attribute name whose values will be looked up in the access lists. 
     attribute_value_list   (submode)  

    SAML アサーション応答の属性や値が、構成された属性とその値に対する属性照合で照合されます。SAML アサーション属性には、それぞれに 0 以上の値を関連付けることができます。各ルールの一部として複数の属性と値を構成できます。ルールは、すべての属性が一致する場合にのみ一致しているとみなされます。正の一致または負の一致を指定できます。

    1. 正の一致:BEGINS_WITH、CONTAINS、ENDS_WITH、EQUALS、REGEX_MATCH

    2. 負の一致:DOES_NOT_BEGIN_WITH、DOES_NOT_CONTAIN、DOES_NOT_END_WITH、DOES_NOT_EQUAL、REGEX_DOES_NOT_MATCH。正の属性一致ルールでは、アサーション応答に属性が存在し、対応する属性のいずれかの値が構成した値リストと一致する場合に、一致しているとみなされます。負の属性一致ルールは、属性が存在しない場合や対応する属性のすべての値が構成した値リストの否定と一致する場合に一致しているとみなされます。

  5. 次に示すように、同じルール内の複数の属性を検索し、1 つのルールで複数の属性一致を構成します。

    [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> attr_matches   New object being created 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:attr_matches> attribute_name firstname 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:attr_matches> attribute_value_list match_criteria equals match_str abc 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:attr_matches:attribute_value_list> save 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:attr_matches> save 
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> 
  6. 上記の詳細に基づいて、構成は次のようになります。

    [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> where
     Tenant: admin
     Cloud: Default-Cloud
     +------------------------+-------------+
     | Field                  | Value       |
     +------------------------+-------------+
     | attr_matches[1]        |             |
     |   attribute_name       | email       |
     |   attribute_value_list |             |
     |     match_criteria     | BEGINS_WITH |
     |     match_str[1]       | [email protected] |
     | attr_matches[2]        |             |
     |   attribute_name       | firstname   |
     |   attribute_value_list |             |
     |     match_criteria     | EQUALS      |
     |     match_str[1]       | abc         |
     +------------------------+-------------+
  7. 同じルールに、一致条件をさらに追加します。たとえば、Host ヘッダーに一致する別の条件を追加できます。

    [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> host_hdr
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> match_criteria hdr_
     hdr_begins_with           header value begins with the configure value(s)
     hdr_contains              header value contains configured value(s)
     hdr_does_not_begin_with   header value does not begins with the configure value(s)
     hdr_does_not_contain      header value  does not contains configured value(s)
     hdr_does_not_end_with     header value does not ends with the configured value(s)
     hdr_does_not_equal        header value does not equals the configured value(s)
     hdr_does_not_exist        header does not exist in the HTTP request
     hdr_ends_with             header value ends with the configured value(s)
     hdr_equals                header value equals the configured value(s)
     hdr_exists                header exists in the HTTP request
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> match_criteria hdr_begins_with
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> value abc.xyz.com
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> save
      [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> 
  8. 必要に応じて、次に示すように HTTP メソッドに基づいて別の条件を追加します。

    [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> host_hdr
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> match_criteria hdr_
     hdr_begins_with           header value begins with the configure value(s)
     hdr_contains              header value contains configured value(s)
     hdr_does_not_begin_with   header value does not begins with the configure value(s)
     hdr_does_not_contain      header value  does not contains configured value(s)
     hdr_does_not_end_with     header value does not ends with the configured value(s)
     hdr_does_not_equal        header value does not equals the configured value(s)
     hdr_does_not_exist        header does not exist in the HTTP request
     hdr_ends_with             header value ends with the configured value(s)
     hdr_equals                header value equals the configured value(s)
     hdr_exists                header exists in the HTTP request
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> match_criteria hdr_begins_with
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> value abc.xyz.com
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:host_hdr> save
      [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> 
  9. 文字列グループまたはパスの文字列値のリストに基づいて、パスの一致を照合します。この照合では大文字と小文字が区別され、照合操作の次のリストがサポートされます。

    [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> path
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:path>
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:path> match_criteria begins_with
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:path> string_group_refs System-Cacheable-Resource-Types
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:path> match_str /acme
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match:path> save
     [admin:controller]: ssopolicy:authorization_policy:authz_rules:match> save
     [admin:controller]: ssopolicy:authorization_policy:authz_rules>

上記の表に示されている任意のアクションを構成できます。次の例では、http_local_response などの HTTP 状態コードを使用してユーザーに 403 応答を送信できます。

[admin:controller]: ssopolicy:authorization_policy:authz_rules> action
[admin:controller]: ssopolicy:authorization_policy:authz_rules:action>
status_code   HTTP status code to use for local response when a policy rule is matched.
type          Defines the action taken when an authorization policy rule is matched.By default, access is allowed to the requested resource.
watch         Watch a given show command
where         Display the in-progress object
[admin:controller]: ssopolicy:authorization_policy:authz_rules:action> type http_local_response
[admin:controller]: ssopolicy:authorization_policy:authz_rules:action> status_code http_response_status_code_403
[admin:controller]: ssopolicy:authorization_policy:authz_rules:action> save   
 [admin:controller]: ssopolicy:authorization_policy:authz_rules> index 1 
 [admin:controller]: ssopolicy:authorization_policy:authz_rules> save 
 [admin:controller]: ssopolicy:authorization_policy> save 
 [admin:controller]: ssopolicy> save 

上記の構成手順に基づく SSO ポリシー構成は次のとおりです。

+------------------------------+----------------------------------------+
| Field                        | Value                                          
+------------------------------+----------------------------------------+
| uuid                         | ssopolicy-16fc1b04-f635-439b-97a4-a3890dead864 |
| name                         | ssopolicy1                                     
| authentication_policy        |                                                
|   default_auth_profile_ref   | saml-idp-authz                                
| authorization_policy         |                                                
|   authz_rules[1]             |                                                
|     name                     | rule1                                          
|     index                    | 1                                              
|     enable                   | True                                           
|     match                    |                                                
|       attr_matches[1]        |                                                
|         attribute_name       | email                                          
|         attribute_value_list |                                                
|           match_criteria     | BEGINS_WITH                                    
|           match_str[1]       | [email protected]                                    
|       attr_matches[2]        |                                                
|         attribute_name       | firstname                                      
|         attribute_value_list |                                                
|           match_criteria     | EQUALS                                         
|           match_str[1]       | abc                                            
|       path                   |                                                
|         match_criteria       | BEGINS_WITH                                    
|         match_case           | INSENSITIVE                                    
|         match_str[1]         | /acme                                   
|         string_group_refs[1] | System-Cacheable-Resource-Types                
|       host_hdr               |                                                
|         match_criteria       | HDR_BEGINS_WITH                                
|         match_case           | INSENSITIVE                                    
|         value[1]             | abc.xyz.com                                    
|       method                 |                                                
|         match_criteria       | IS_IN                                          
|         methods[1]           | HTTP_METHOD_GET                                
|     action                   |                                                
|       type                   | HTTP_LOCAL_RESPONSE                            
|       status_code            | HTTP_RESPONSE_STATUS_CODE_403                  
| type                         | SSO_TYPE_SAML                                  
| tenant_ref                   | admin                                       
+------------------------------+----------------------------------------+