組織ユーザー¶
複数のアカウントを持つ組織では、同一人物を複数のアカウントのユーザーにする必要があることがよくあります。各アカウントの担当者のユーザーオブジェクトを個別に作成する繰り返しを避けるために、組織管理者は、 組織アカウント に 組織ユーザー を作成することができます。各組織ユーザーはグローバルユーザーエンティティとして機能します。アカウント管理者によって通常のアカウントにインポートすることができます。これにより、同一人物に複数のアカウントで1つのユーザーオブジェクトを持たせるプロセスを簡略化できます。
アカウント管理者は、組織ユーザーを通常のアカウントに直接追加することはできません。むしろ、組織ユーザーの論理的なグループである、 組織ユーザーグループ を追加します。アカウント管理者が組織ユーザーグループをインポートすると、その組織ユーザーがアカウントに追加されます。
注釈
1つまたは複数の通常アカウントにすでにユーザーオブジェクトを持っている人のために組織ユーザーを作成したい場合は、組織ユーザーグループをインポートした後、組織ユーザーを既存のユーザーオブジェクトにリンクする必要があります。詳細については、 ユーザーインポート後の競合の解決 をご参照ください。
始めましょう¶
組織ユーザーを1つ以上のアカウントに登録する基本的なワークフローは以下の通りです。
組織アカウントのグローバル組織管理者として:
複数の通常アカウントのユーザーにしたい人ごとに、 組織ユーザーを作成します。
ユーザーを論理的にグループ化した 組織ユーザーグループを作成します。
通常のアカウントのアカウント管理者が 組織ユーザーグループを利用できるようにします。
通常のアカウントの管理者として:
アカウントに 組織のユーザーグループをインポートします。
このワークフローのエンドツーエンドの例については、 拡張例 を参照してください。
組織ユーザーの作成¶
組織管理者は、ログイン名や電子メールなどのユーザーオブジェクトの基本的なプロパティを持つ組織ユーザーを作成します。メールだけが必要ですが、これらの基本的なプロパティは、ユーザーをインポートした後に通常のアカウントでセットすることはできません。これらの基本特性のリストについては、 CREATE ORGANIZATION USER を参照してください。
例として、次のコマンドで組織ユーザーを作成します。
USE ROLE GLOBALORGADMIN;
CREATE ORGANIZATION USER asmith
EMAIL = 'asmith@example.com'
LOGIN_NAME = 'asmith@example.com';
組織ユーザーグループ¶
組織ユーザーグループ は、組織ユーザーの論理的なグループです。組織管理者は、これらの組織ユーザーグループを作成し、各グループに属するべき組織ユーザーを追加します。アカウント管理者が組織ユーザーグループをアカウントにインポートすると、グループ内のすべての組織ユーザーが、通常のアカウントのユーザーオブジェクトになります。組織ユーザーは、複数の組織ユーザーグループのメンバーになることができます。
アカウント管理者が組織ユーザーグループを通常のアカウントにインポートすると、Snowflakeは同じ名前のアクセス制御 ロール を作成します。例えば、組織のユーザーグループの名前が data_stewards
である場合、そのグループを通常のアカウントにインポートすると、 data_stewards
という名前のロールが作成されます。組織のユーザーグループからインポートされた各ユーザーには、このロールが付与されます。
通常アカウントの管理者は、組織のユーザーグループからインポートされた各ユーザーに付与されたロールへの権限付与や取り消しを行うことで、アクセス制御を細かく調整することができます。また、アカウント固有のロールを新しいロールに付与したり、新しいロールをアカウント固有のロールに付与することもできます。
同じ組織のユーザーグループを複数の通常アカウントにインポートして、組織全体で一貫したロールを実装できます。各レギュラーアカウントはアカウント固有の権限をロールに割り当てることができますが、命名は統一されます。あるいは、アカウントごとに別の組織ユーザーグループを作成し、特定のアカウントで必要な組織ユーザーを適切な組織ユーザーグループに追加することもできます。
管理者が同じ組織ユーザーを含む複数の組織ユーザーグループをインポートする場合、ローカルユーザーは 1 つだけ作成され、このユーザーにはすべての組織ユーザーグループのロールが付与されます。
通常のアカウントのアカウント管理者のために組織ユーザーグループを準備する組織管理者のタスクは、3つのステップからなります。
グループの可視性をセットして、どの一般アカウントがアクセスできるかを指定します。
組織ユーザーグループの作成¶
組織管理者は、 CREATE ORGANIZATION USER GROUP コマンドを実行し、組織アカウントに新しい組織ユーザーグループを作成します。
例として、次のコマンドは、データエンジニアの論理的なグループを表す組織ユーザーグループを作成します。
CREATE ORGANIZATION USER GROUP data_engineers_group;
組織ユーザーを組織ユーザーグループに追加¶
組織管理者が組織ユーザーグループを作成した後、 ALTER ORGANIZATION USER GROUP コマンドを実行し、組織ユーザーをカンマ区切りのリストとしてグループに追加することができます。例えば、既存の2人の組織ユーザーを組織ユーザーグループ data_engineers_group
に追加するには、次のように実行します。
ALTER ORGANIZATION USER GROUP data_engineers_group
ADD ORGANIZATION USERS asmith, sjohnson;
組織のユーザーグループを通常のアカウントで利用可能にします。¶
組織グループを作成したら、そのグループを表示およびインポートできる一般アカウントを指定する必要があります。アカウント管理者は、 ALTER ORGANIZATION USER GROUP コマンドを使用してグループの可視性をセットするまで、組織ユーザー グループを使用してユーザーをインポートすることはできません。すべての一般アカウントが組織ユーザーグループをインポートできるように指定することも、特定のアカウントにアクセスを制限することもできます。
重要
ALTER ORGANIZATION USER GROUP コマンドを実行して可視性をセットすると、以前の可視性設定が上書きされます。例えば、visibility を ALL
にセットした後、 ALTER コマンドを実行して visibility を account_a
にセットした場合、組織ユーザーグループから作成されたユーザーとロールは、 account_a
を除くすべてのアカウントから削除されます。
次のコマンドは、アカウント qa_env
に組織ユーザーグループを追加させるだけです。
ALTER ORGANIZATION USER GROUP data_engineers_group
SET VISIBILITY = ACCOUNTS qa_env;
通常のアカウントでユーザーをインポート¶
組織管理者が組織ユーザーグループを作成した後、一般アカウントの管理者は、 ALTER ACCOUNT コマンドを実行して組織ユーザーグループを追加することで、組織ユーザーをインポートすることができます。これらの管理者が組織ユーザーグループをインポートできるのは、組織管理者が グループの可視性をセットして、通常のアカウントがアクセスできる場合のみです。
既定の設定では、 ACCOUNTADMIN ロールを持つユーザーだけが、組織のユーザーグループを通常のアカウントにインポートできます。他のユーザーに組織グループのインポートを許可するには、 IMPORT ORGANIZATION USER GROUPS 権限を付与します。
組織ユーザーグループを通常のアカウントにインポートする構文は以下のとおりです。
ALTER ACCOUNT ADD ORGANIZATION USER GROUP <group_name>
組織ユーザーグループをインポートしてユーザーを追加する例については、 拡張例 を参照してください。
ユーザーインポート後の競合の解決¶
通常のアカウントで組織ユーザーをインポートするアカウント管理者は、コンフリクトを手動でチェックする必要があります。このようなコンフリクトは、ユーザーのプロパティまたは組織のユーザーグループの名前の間で発生する可能性があります。
組織のユーザーグループと既存のロールの競合¶
コンフリクトは、組織ユーザーグループの名前が、通常のアカウントに存在する ロール の名前と一致する場合に発生します。競合を解決するまで、グループ内のユーザーはインポートされません。
組織ユーザーグループのインポート後に競合があるかどうかを確認するには、次の手順を実行します。
SHOW ORGANIZATION USER GROUPS コマンドを実行します。
is_imported
列で、値が TRUE かどうかをチェックします。値が FALSE の場合、組織ユーザーグループは正常にインポートされませんでした。
ロールをグループにリンクすることで、ロールと組織ユーザーグループの競合を解決できます。ロールをリンクすることで、今後組織のユーザーグループとして管理することができます。競合するロールをリンクすると、それ以上アクションを行わなくても、組織のユーザーグループがアカウントに追加されます。 SYSTEM$LINK_ORGANIZATION_USER_GROUP 関数を呼び出して、ロールを組織のユーザーグループにリンクします。
例えば、組織ユーザーグループ marketing_team
をアカウントにインポートする前に、 marketing_team
というロールがアカウントに存在していたとします。ロールを組織のユーザーグループにリンクし、グループのインポート処理を完了するには、以下を実行します。
SELECT SYSTEM$LINK_ORGANIZATION_USER_GROUP('marketing_team');
組織ユーザーと既存ユーザーの競合¶
コンフリクトは以下のいずれかに当てはまる場合に発生します。
組織ユーザーの
name
プロパティは、通常アカウントの既存ユーザーのname
と一致します。組織ユーザーの
login_name
プロパティは、通常アカウントの既存ユーザーのlogin_name
と一致します。
組織ユーザーグループのインポート後に、ユーザーの競合があるかどうかを確認するには、次の手順を実行します。
コマンド SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP を実行します。
is_imported
列で、値が FALSE の行を検索します。その行のユーザーの少なくとも 1 つのプロパティが、既存のユーザーのプロパティと競合しています。
Tip
RESULT_SCAN 関数を使用して、 SHOW ORGANIZATION USERS の出力を後処理し、 is_imported
列でフィルターをかけることができます。たとえば、 marketing_team
組織ユーザーグループから正常にインポートされなかった組織ユーザーを検索するには、以下を実行します。
SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP marketing_team;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "is_imported" = 'false';
既存のユーザーオブジェクトが組織ユーザーと同一人物に対応し、今後そのユーザーを組織ユーザーとして管理したい場合、既存のユーザーを組織ユーザーにリンクして競合を解決することができます。 SYSTEM$LINK_ORGANIZATION_USER 関数を呼び出して、既存のユーザーを組織ユーザーにリンクします。例えば、既存のユーザー jloeb
と組織ユーザー jloebsmith
をリンクするには、以下を実行します。
SELECT SYSTEM$LINK_ORGANIZATION_USER('jloeb', 'jloebsmith');
既存のローカルユーザーを新しい組織ユーザーとリンクしたくない場合は、競合を解決するために、通常のアカウントでユーザーオブジェクトまたはそのプロパティの名前を変更することができます。例えば、既存のユーザーと組織ユーザーが共にログイン名 JOE_LOGIN
の場合、通常のアカウントで以下を実行することで、リンクを張らずに競合を回避することができます。
USE ROLE ACCOUNTADMIN;
ALTER USER joe SET LOGIN_NAME = joe_login_renamed;
インポートしたユーザーの変更¶
通常のアカウントの管理者は、 ALTER USER コマンドを使用して、インポート後のユーザー オブジェクトのプロパティのサブセットを変更することができます。管理者は、組織アカウントで組織ユーザーにセットできるプロパティ を除く すべてのプロパティを変更できます。組織アカウントでのみセットできるプロパティのリストについては、 CREATE ORGANIZATION USER を参照してください。
組織ユーザーとグループの削除¶
組織ユーザーおよび組織ユーザーグループは、 1つのアカウントから削除する ことができます。または、 組織アカウントでドロップする ことにより、すべてのアカウントから削除することができます。
単一の通常アカウントからのユーザーの削除¶
アカウント管理者は、 ALTER ACCOUNT コマンドを実行して、アカウントから組織ユーザーグループを削除することができます。組織ユーザーグループを削除すると、インポートされたすべてのユーザーが削除され、組織ユーザーグループがインポートされたときに作成されたロールが削除されます。このコマンドは、他の通常アカウントの組織ユーザーや組織ユーザーグループ、組織アカウントには影響しません。
注釈
組織ユーザーは、複数の組織ユーザーグループのメンバーになることができます。ユーザーが複数の組織グループからインポートされた場合、通常のアカウントからいずれかのグループを削除しても、ユーザーは削除されません。組織のユーザーグループがすべて削除されるまで、ユーザーは削除されません。
たとえば、次のコマンドは、 data_stewards
グループからインポートされたユーザーをすべて削除し、 data_stewards
ロールを削除します。
ALTER ACCOUNT REMOVE ORGANIZATION USER GROUP data_stewards;
すべてのレギュラーアカウントからユーザーを削除¶
組織ユーザーを組織アカウントから削除すると、そのユーザーをインポートしたすべての通常アカウントから、対応するユーザーオブジェクトが削除されます。組織ユーザーを削除するには、組織アカウントで DROP ORGANIZATION USER コマンドを実行します。
組織アカウントで組織ユーザーグループが削除された場合、組織ユーザーへの影響は、通常アカウントのユーザーが、アカウントにインポートされた他の組織ユーザーグループに属しているかどうかに依存します。組織ユーザーが、インポートされた別の組織ユーザーグループに属している場合、そのユーザーはアカウントから削除されません。そうでない場合、組織のユーザーグループを削除すると、グループからインポートされたすべてのユーザーが削除されます。
組織ユーザーグループを削除すると、グループのインポート時に作成されたロールも削除されます。
組織ユーザーグループを削除するには、組織アカウントで DROP ORGANIZATION USER GROUP コマンドを実行します。
組織ユーザーと組織ユーザーグループのリンク解除¶
組織ユーザーが通常のアカウントに正常にインポートされると、ローカルユーザーオブジェクトが組織ユーザーにリンクされます。アカウントにユーザーオブジェクトを保持したいが、組織ユーザーとの関連付けは不要と判断した場合、 SYSTEM$UNLINK_ORGANIZATION_USER 関数を使用して、組織ユーザーからローカルユーザーのリンクを解除することができます。ユーザーのプロパティはすべて保持され、今後はローカルユーザーとして管理できます。
同様に、 SYSTEM$UNLINK_ORGANIZATION_USER_GROUP 関数を使用して、組織のユーザーグループを追加して作成されたロールのリンクを解除することができます。これにより、ロールに関するすべての内容は変わりませんが、組織のユーザーグループからのリンクが解除されます。
拡張例¶
- 組織管理者のワークフロー
組織管理者として、組織アカウントにサインインします。
データスチュワードである2人の組織ユーザーを作成します。
USE ROLE GLOBALORGADMIN; CREATE ORGANIZATION USER joe_kelley EMAIL = 'jkelley@example.com' LOGIN_NAME = 'jkelley@example.com'; CREATE ORGANIZATION USER grace_vivian EMAIL = 'gvivian@example.com' LOGIN_NAME = 'gvivian@example.com';
データスチュワードの論理的なグループを表す組織ユーザーグループを作成します。
CREATE ORGANIZATION USER GROUP data_stewards_group;
組織ユーザーを新しい組織ユーザーグループに追加します。
ALTER ORGANIZATION USER GROUP data_stewards_group ADD ORGANIZATION USERS joe_kelley, grace_vivian;
組織ユーザーグループをインポートするために、すべての通常のアカウントを許可します。
ALTER ORGANIZATION USER GROUP data_stewards_group SET VISIBILITY = ALL;
- アカウント管理者のワークフロー
アカウント管理者として、組織ユーザーをインポートする通常のアカウントにサインインします。
アカウントにインポートできる組織ユーザーグループのリスト。
USE ROLE ACCOUNTADMIN; SHOW ORGANIZATION USER GROUPS;
組織のユーザーグループをアカウントにインポートします。
ALTER ACCOUNT ADD ORGANIZATION USER GROUP data_stewards_group;
組織のユーザーグループと既存のロールの競合をチェックします。
SHOW ORGANIZATION USER GROUPS;
is_imported
列の値が「TRUE」であることを確認してください。これはコンフリクトがなかったことを示します。アカウントに追加されたユーザーをリストアップし、競合をチェックします。
SHOW ORGANIZATION USERS IN ORGANIZATION USER GROUP data_stewards_group;
すべての組織ユーザーの
is_imported
列の値が TRUE であることを確認してください。