OAuth のユーザー同意の管理¶
このトピックでは、 OAuth の委任された認証、つまり、指定されたロールのSnowflake統合に関連付けられた、1つ以上のクライアントに与えられるユーザーの同意を管理する方法について説明します。
このトピックの内容:
委任された認証の追加¶
委任された認証をユーザーに追加すると、特定の統合に対して指定されたロールを使用してセッションを開始する同意が事前認証されます。委任された認証がなければ、ユーザーは認証後にロールの同意を認証する必要があります。委任された認証は、指定されたロールの認証ステップのみをバイパスします。ユーザーは、常に認証コードをリクエストするために認証する必要があります。
委任された認証を追加する機能は、カスタムクライアントに制限されています。パブリッククライアント(つまり、Tableau Serverまたはデスクトップ)の場合、Snowflakeは 常に 指定されたロールの確認ダイアログを表示します。
ADD DELEGATED AUTHORIZATION キーワードで ALTER USER を使用して、ロールのユーザーの同意を追加します。
ALTER USER <username> ADD DELEGATED AUTHORIZATION
OF ROLE <role_name>
TO SECURITY INTEGRATION <integration_name>;
条件:
username
同意を追加するユーザーを指定します。
role_name
アクセストークンに関連付けられたロールを指定します。
integration_name
特定のクライアントのアクセストークンに関連付けられた統合を指定します。
注釈
この SQL コマンドを実行できるのは、セキュリティ管理者(つまり、 SECURITYADMIN ロールを持つユーザー)以上のみです。
たとえば、MYINT 統合用として CUSTOM1 ロールのユーザーの同意をユーザー JANE.SMITH に追加します。
ALTER USER jane.smith ADD DELEGATED AUTHORIZATION
OF ROLE custom1
TO SECURITY INTEGRATION myint;
委任された認証の表示¶
SHOW DELEGATED AUTHORIZATIONS を使用して、アクセス権限があるアクティブな委任された認証を一覧表示します。
SHOW DELEGATED AUTHORIZATIONS;
+-------------------------------+-----------+-----------+-------------------+--------------------+
| created_on | user_name | role_name | integration_name | integration_status |
+-------------------------------+-----------+-----------+-------------------+--------------------+
| 2018-11-27 07:43:10.914 -0800 | JSMITH | PUBLIC | MY_OAUTH_INT | ENABLED |
+-------------------------------+-----------+-----------+-------------------+--------------------+
指定したユーザーのアクティブな委任された認証を一覧表示します。ユーザーは、委任された独自の認証をリストできます。それ以外の場合、このコマンドバリアントにはユーザーのOWNERSHIP 権限が必要です。
SHOW DELEGATED AUTHORIZATIONS
BY USER <username>;
指定された統合のアクティブな委任された認証をリストします。このコマンドバリアントには、統合に対する OWNERSHIP 権限(つまり、ACCOUNTADMIN ロール)が必要です。
SHOW DELEGATED AUTHORIZATIONS
TO SECURITY INTEGRATION <integration_name>;
委任された認証の取り消し¶
ユーザーは、指定された統合から同意を取り消すことができます。これには、統合に関連付けられたアクセストークンを無効にする効果があります。
特定の統合に対するユーザーの同意を取り消すには、 ALTER USER ... REMOVE DELEGATED AUTHORIZATIONS コマンドを実行します。
注釈
この SQL コマンドを実行できるのは、セキュリティ管理者(つまり、 SECURITYADMIN ロールを持つユーザー)以上のみです。
ALTER USER <username>
REMOVE DELEGATED AUTHORIZATIONS
FROM SECURITY INTEGRATION <integration_name>
特定のロールに関連付けられたユーザーの同意を取り消すには、ステートメントに OF ROLE role_name
パラメーターを含めます。
ALTER USER <username>
REMOVE DELEGATED AUTHORIZATION OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
条件:
username
同意を取り消すユーザーを指定します。
role_name
アクセストークンに関連付けられたロールを指定します。
integration_name
特定のクライアントのアクセストークンに関連付けられた統合を指定します。
たとえば、 MYINT 統合の場合、 JANE.SMITH から CUSTOM1 ロールのユーザー同意を削除します。
ALTER USER jane.smith
REMOVE DELEGATED AUTHORIZATION OF ROLE custom1
FROM SECURITY INTEGRATION myint;