セッションポリシーの使用¶
このトピックでは、セッションポリシーの使用方法の例を示します。
標準セッションポリシー¶
以下の手順は、セッションポリシーを作成し、アカウントまたはユーザーにセッションポリシーを設定するための代表的なガイドです。
これらのステップは、 policy_admin という名前のカスタムロールがセッションポリシーを所有し(つまり、セッションポリシーに対する OWNERSHIP 権限を持っている)、アカウントまたはユーザーにセッションポリシーを設定する責任がある(つまり、 ACCOUNT 権限または APPLY SESSION POLICY ON USER 権限の APPLY SESSION POLICY)ことを前提としています。
注釈
アカウントにポリシーを設定するには、 policy_admin カスタムロールに次の権限が必要です。
- セッションポリシーを含むデータベースとスキーマの USAGE。 
- セッションポリシーを含むスキーマの CREATE SESSION POLICY。 
次のステップに従って、セッションポリシーを実装します。
- ユーザーがセッションポリシーを作成および管理できるようにするカスタムロールを作成します。この例では、カスタムロールは - policy_adminですが、ロールには適切な名前を付けることができます。- カスタムロールがすでに存在する場合は、次のステップに進みます。 - それ以外の場合は、 - policy_adminカスタムロールを作成します。- USE ROLE USERADMIN; CREATE ROLE policy_admin; 
- カスタムロールに権限を付与します。 - 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; - セッションポリシーを個々のユーザーに関連付ける場合、 - GRANT APPLY SESSION POLICY ON USER jsmith TO ROLE policy_admin; - 詳細については、 コマンド、操作、および権限の概要 をご参照ください。 
- 新しいセッションポリシーを作成します。 - 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'; - 詳細については、 CREATE SESSION POLICY をご参照ください。 
- 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; - 重要 - アカウントまたはユーザーにすでに設定されているセッションポリシーを置き換えるには、最初にセッションポリシーの設定を解除してから、アカウントまたはユーザーに新しいセッションポリシーを設定します。例: - ALTER ACCOUNT UNSET session policy; ALTER ACCOUNT SET SESSION POLICY mydb.policies.session_policy_prod_2; 
セッションポリシーでセカンダリロールを指定する¶
以下のセクションでは、セッションポリシーでセカンダリロールを指定する方法について詳しく説明します。
セッションポリシーにおけるセカンダリロールの詳細については、 セッションポリシーにおけるセカンダリロール を参照してください
セッションポリシーにプロパティを設定する¶
セキュリティ管理者は、新しいセッションポリシーを作成するか、既存のセッションポリシーを変更して、 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'; 
- セカンダリロールを許可しないように、既存のセッションポリシーを変更します。 - ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = (); - 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;
アカウント内のすべてのユーザーに対してセカンダリロールを許可しない¶
アカウント内のすべてのユーザーがセカンダリロールを使用できないようにするには、アカウントにセッションポリシーを設定し、そのセッションでセカンダリロールを使用できないようにします。例:
- セカンダリロールを許可しないようにセッションポリシーを変更します。 - ALTER SESSION POLICY prod_env_session_policy SET ALLOWED_SECONDARY_ROLES = (); 
- アカウントにセッションポリシーを割り当てます。 - ALTER ACCOUNT SET SESSION POLICY prod_env_session_policy; 
ユーザーが 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;
アカウントにセッションポリシーが設定されている場合、ユーザーに割り当てられたセッションポリシーは、アカウントのセッションポリシーを上書きします。
ユーザーが USE SECONDARY ROLES コマンドを実行してセカンダリロール(USE SECONDARY ROLES (ANALYST, DATA_SCIENTIST); など)をアクティブにすると、以下のエラーメッセージが表示されます。
SQL execution error: USE SECONDARY ROLES '[ANALYST, DATA_SCIENTIST]' not allowed as per session policy.
ユーザーに特定のセカンダリロールの使用を許可する¶
ユーザーが特定のセカンダリロールを使用できるようにするには、以下を実行します。
- ユーザーが使用できるセカンダリロールを指定するセッションポリシーを作成します。 - 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'; 
- ユーザーにセッションポリシーを設定します。 - ALTER USER bsmith SET SESSION POLICY prod_env_session_policy; 
ユーザーは必要に応じて、 USE SECONDARY ROLES コマンドでセカンダリロールをアクティブにすることができます。例:
- すべてのセカンダリロールをアクティブにします。 - USE SECONDARY ROLES ALL; 
- DATA_SCIENTISTをセカンダリロールとしてアクティブにします。- USE SECONDARY ROLES DATA_SCIENTIST; 
構文の詳細については、 USE SECONDARY ROLES を参照してください。
セッションポリシーをターゲットアカウントに複製する¶
セッションポリシーとその参照(ユーザーまたはアカウントへの割り当て)は、データベースの複製とアカウントの複製を使用して、ソースアカウントからターゲットアカウントに複製できます。詳細については、以下をご参照ください。
セカンダリロールを指定するセッションポリシーの複製に関する詳細は、 セカンダリロールを持つセッションポリシーの複製 を参照してください。