セッションポリシーの使用

このトピックでは、セッションポリシーの使用方法の例を示します。

標準セッションポリシー

以下の手順は、セッションポリシーを作成し、アカウントまたはユーザーにセッションポリシーを設定するための代表的なガイドです。

これらのステップは、 policy_admin という名前のカスタムロールがセッションポリシーを所有し(つまり、セッションポリシーに対する OWNERSHIP 権限を持っている)、アカウントまたはユーザーにセッションポリシーを設定する責任がある(つまり、 ACCOUNT 権限または APPLY SESSION POLICY ON USER 権限の APPLY SESSION POLICY)ことを前提としています。

注釈

アカウントにポリシーを設定するには、 policy_admin カスタムロールに次の権限が必要です。

  • セッションポリシーを含むデータベースとスキーマの USAGE。

  • セッションポリシーを含むスキーマの CREATE SESSION POLICY。

次のステップに従って、セッションポリシーを実装します。

  1. ユーザーがセッションポリシーを作成および管理できるようにするカスタムロールを作成します。この例では、カスタムロールは policy_admin ですが、ロールには適切な名前を付けることができます。

    カスタムロールがすでに存在する場合は、次のステップに進みます。

    それ以外の場合は、 policy_admin カスタムロールを作成します。

    USE ROLE USERADMIN;
    
    CREATE ROLE policy_admin;
    
    Copy
  2. カスタムロールに権限を付与します。

    policy_admin カスタムロールに次の権限がまだない場合は、以下に示すようにこれらの権限を付与します。

    • USAGE セッションポリシーを含むデータベースとスキーマ。

    • セッションポリシーを含むスキーマの CREATE SESSION POLICY。

    • アカウントの APPLY SESSION POLICY。

    • ユーザーレベルでセッションポリシーを設定する場合は、各ユーザーの APPLY SESSION POLICY。

    USE ROLE SECURITYADMIN;
    
    GRANT USAGE ON DATABASE mydb TO ROLE policy_admin;
    
    GRANT USAGE, CREATE SESSION POLICY ON SCHEMA mydb.policies TO ROLE policy_admin;
    
    GRANT APPLY SESSION POLICY ON ACCOUNT TO ROLE policy_admin;
    
    Copy

    セッションポリシーを個々のユーザーに関連付ける場合、

    GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin;
    
    Copy

    詳細については、 コマンド、操作、および権限の概要 をご参照ください。

  3. 新しいセッションポリシーを作成します。

    USE ROLE policy_admin;
    
    CREATE SESSION POLICY mydb.policies.session_policy_prod_1
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      COMMENT = 'Session policy for the prod_1 environment';
    
    Copy

    詳細については、 CREATE SESSION POLICY をご参照ください。

  4. ALTER ACCOUNT コマンドでアカウントを、 ALTER USER コマンドでユーザーをセッションポリシーに設定します。

    USE ROLE policy_admin;
    
    ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_1;
    
    ALTER USER jsmith SET SESSION POLICY my_database.my_schema.session_policy_prod_1;
    
    Copy

    重要

    アカウントまたはユーザーにすでに設定されているセッションポリシーを置き換えるには、最初にセッションポリシーの設定を解除してから、アカウントまたはユーザーに新しいセッションポリシーを設定します。例:

    ALTER ACCOUNT UNSET session policy;
    
    ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_2;
    
    Copy

セッションポリシーでセカンダリロールを指定する

以下のセクションでは、セッションポリシーでセカンダリロールを指定する方法について詳しく説明します。

セッションポリシーにおけるセカンダリロールの詳細については、 セッションポリシーにおけるセカンダリロール を参照してください

セッションポリシーにプロパティを設定する

セキュリティ管理者は、新しいセッションポリシーを作成するか、既存のセッションポリシーを変更して、 ALLOWED_SECONDARY_ROLES プロパティを設定することができます。例:

  • すべてのセカンダリロールを許可する新しいセッションポリシーを作成します。

    CREATE OR REPLACE SESSION POLICY prod_env_session_policy
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      ALLOWED_SECONDARY_ROLES = ('ALL')
      COMMENT = 'session policy for use in the prod_1 environment';
    
    Copy
  • セカンダリロールを許可しないように、既存のセッションポリシーを変更します。

    ALTER SESSION POLICY prod_env_session_policy
      SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy

    ALTER SESSION POLICY コマンドは、そのプロパティがすでに設定されている場合、そのプロパティ値を変更することができます。

構文の詳細については、 セッションポリシーの管理 を参照してください。

ALLOWED_SECONDARY_ROLES プロパティの値を表示するには、 DESCRIBE SESSION POLICY コマンドを使用するか、 GET_DDL 関数を呼び出します。

セッションポリシーのプロパティの設定を解除する

ALTER SESSION POLICY コマンドを使用して、セッションポリシーのセカンダリロールを設定解除することができます。

ALTER SESSION POLICY prod_env_session_policy
  UNSET ALLOWED_SECONDARY_ROLES;
Copy

アカウント内のすべてのユーザーに対してセカンダリロールを許可しない

アカウント内のすべてのユーザーがセカンダリロールを使用できないようにするには、アカウントにセッションポリシーを設定し、そのセッションでセカンダリロールを使用できないようにします。例:

  1. セカンダリロールを許可しないようにセッションポリシーを変更します。

    ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = ();
    
    Copy
  2. アカウントにセッションポリシーを割り当てます。

    ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy;
    
    Copy

ユーザーが USE SECONDARY ROLES analyst; のような USE SECONDARY ROLES コマンドでセカンダリロールをアクティブにしようとすると、以下のエラーメッセージが発生します。

SQL execution error: USE SECONDARY ROLES '[ANALYST]' not allowed as per session policy.

特定のユーザーに対してセカンダリロールを許可しない

特定のユーザーにセカンダリロールの使用を許可しないようにするには、そのセッションでセカンダリロールを許可しないセッションポリシーをユーザーに設定します。例えば、そのセッションポリシーがすでに存在する場合は次のようになります。

ALTER USER jsmith SET SESSION POLICY prod_env_session_policy;
Copy

アカウントにセッションポリシーが設定されている場合、ユーザーに割り当てられたセッションポリシーは、アカウントのセッションポリシーを上書きします。

ユーザーが USE SECONDARY ROLES コマンドを実行してセカンダリロール(USE SECONDARY ROLES (ANALYST, DATA_SCIENTIST); など)をアクティブにすると、以下のエラーメッセージが表示されます。

SQL execution error: USE SECONDARY ROLES '[ANALYST, DATA_SCIENTIST]' not allowed as per session policy.

ユーザーに特定のセカンダリロールの使用を許可する

ユーザーが特定のセカンダリロールを使用できるようにするには、以下を実行します。

  1. ユーザーが使用できるセカンダリロールを指定するセッションポリシーを作成します。

    CREATE OR REPLACE SESSION POLICY prod_env_session_policy
      SESSION_IDLE_TIMEOUT_MINS = 30
      SESSION_UI_IDLE_TIMEOUT_MINS = 30
      ALLOWED_SECONDARY_ROLES = (DATA_SCIENTIST, ANALYST)
      COMMENT = 'session policy for user secondary roles data_scientist and analyst';
    
    Copy
  2. ユーザーにセッションポリシーを設定します。

    ALTER USER bsmith SET SESSION POLICY prod_env_session_policy;
    
    Copy

ユーザーは必要に応じて、 USE SECONDARY ROLES コマンドでセカンダリロールをアクティブにすることができます。例:

  • すべてのセカンダリロールをアクティブにします。

    USE SECONDARY ROLES ALL;
    
    Copy
  • DATA_SCIENTIST をセカンダリロールとしてアクティブにします。

    USE SECONDARY ROLES DATA_SCIENTIST;
    
    Copy

構文の詳細については、 USE SECONDARY ROLES を参照してください。

セッションポリシーをターゲットアカウントに複製する

セッションポリシーとその参照(ユーザーまたはアカウントへの割り当て)は、データベースの複製とアカウントの複製を使用して、ソースアカウントからターゲットアカウントに複製できます。詳細については、以下をご参照ください。

セカンダリロールを指定するセッションポリシーの複製に関する詳細は、 セカンダリロールを持つセッションポリシーの複製 を参照してください。