セッションポリシーの使用¶
このトピックでは、セッションポリシーの使用方法の例を示します。
標準セッションポリシー¶
以下の手順は、セッションポリシーを作成し、アカウントまたはユーザーにセッションポリシーを設定するための代表的なガイドです。
これらのステップは、 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 を参照してください。
セッションポリシーをターゲットアカウントに複製する¶
セッションポリシーとその参照(ユーザーまたはアカウントへの割り当て)は、データベースの複製とアカウントの複製を使用して、ソースアカウントからターゲットアカウントに複製できます。詳細については、以下をご参照ください。
セカンダリロールを指定するセッションポリシーの複製に関する詳細は、 セカンダリロールを持つセッションポリシーの複製 を参照してください。