Standard または Advancedのライセンスで利用可能。
PostgreSQL では、ロールを使用して、データベース クラスターおよびデータベースにログインします。 個々のユーザーは、ログイン ロールと呼ばれます。 ログイン ユーザー ロールがジオデータベース内のオブジェクトを所有する場合、データベース管理者は、ジオデータベースが格納されているデータベースにスキーマも作成する必要があります。 ArcGIS で PostgreSQL を使用する場合、スキーマにはロールと同じ名前を付ける必要があります。また、ログイン ロールによって所有されていなければなりません。
データベース管理者は、[データベース ユーザーの作成 (Create Database User)] ツールを使用して、テーブルとフィーチャクラスを作成する権限を持つログイン ロールを追加できます。 このツールでは、PostgreSQL データベース クラスターにデータベース認証ログイン ユーザー ロールを作成し、ユーザーに対応するスキーマを指定したデータベースに作成して、新しいスキーマに対する usage 権限を public ロールに付与します。
または、pgAdmin や PL/pgSQL などの PostgreSQL クライアント アプリケーションを使用して、ログイン ユーザー ロールを作成できます。 スキーマを所有していないためジオデータベース内にオブジェクトを作成できないログイン ロールを作成する場合、あるいは SSPI (Security Support Provider Interface) または LDAP (Lightweight Directory Access Protocol) ログインにマッピングされたログイン ロールを作成する場合は、それらのアプリケーションを使用する必要があります。
データベース管理者は、ログイン ロールを追加できるグループ ロールを作成して、関連するすべてのログイン ユーザー ロールに適用されるグループの権限を指定することもできます。 グループ ロールを作成するには、[ロールの作成 (Create Role)] ツールまたはスクリプトを使用するか、SQL を使用します。
注意:
ジオデータベース内のオブジェクトを所有するグループ内の各ログイン ユーザー ロールは、対応する固有のスキーマが必要です。 グループ ロール用のスキーマを作成することはできません。
ジオプロセシングを使用して、データベース オブジェクトを追加する
ArcGIS Pro から [データベース ユーザーの作成 (Create Database User)] ツールを実行するか、Python スクリプトで management.CreateDatabaseUser ArcPy 関数を呼び出して、テーブル、フィーチャクラス、およびビューを作成する権限を持つログイン ユーザー ロールを作成します。
[データベース ユーザーの作成 (Create Database User)] ツールまたは management.CreateDatabaseUser ArcPy 関数を実行するには、スーパーユーザー ステータスを持つロールを使用してデータベースに接続している必要があります。
データベース ユーザーの作成 (Create Database User) ツールの使用
[データベース ユーザーの作成 (Create Database User)] ツールを使用して PostgreSQL にログイン ユーザー ロールを作成するには、次の手順を実行します。
- ArcGIS Pro を起動します。
- PostgreSQL のスーパーユーザー権限を持つロールを使用して、データベースまたはジオデータベースに接続します。
- [データベース ユーザーの作成 (Create Database User)] ツールを開きます。
このツールは、データ管理ツールボックスのジオデータベース管理ツールセットにあります。
- [入力データベース接続] パラメーターで、データベース接続を指定します。
- このツールで作成するログイン ユーザー ロールとスキーマの名前を入力します。
- データベース ユーザーのパスワードを入力します。
- このユーザーをメンバーにするグループ ロールがすでに存在する場合は、そのグループ ロールを指定します。
- [実行] をクリックします。
これで、テーブル、フィーチャクラス、およびビューを作成する権限を持つユーザーがデータベースに作成されました。
新しいユーザーは、データベースに接続してデータセットを作成できます。 続いて、他のユーザーに権限を付与できます。 手順については、「データベースとエンタープライズ ジオデータベースの権限の付与と取り消し」をご参照ください。
Python スクリプトの実行
ログイン ユーザー ロールの作成をスクリプト化するには、以下の手順を実行します。
- ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のコード ブロックのいずれかをコピーします。
自分のサイトに固有の情報を使用するようにコードを変更します。
これらの例では、PostgreSQL データベース クラスターでスーパーユーザー権限を持つユーザーとして接続する既存のデータベース コネクション ファイルがあることを前提としています。 コネクション ファイルが存在しない場合は、スクリプトを実行する前にファイルを作成します。
# Name: createdatabaseuser_exampleW.py # Description: Uses existing database connection file # on a Windows computer to create a database user in PostgreSQL. # Import arcpy module import arcpy # Provide a database connection file for the PostgreSQL administrator user. connection = "C:\\ArcGIS\connection_files\<Connection file>.sde" # Process: Create database user that can create data. arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")# Name: createdatabaseuser_exampleL.py # Description: Uses existing database connection file # on a Linux computer to create a database user in PostgreSQL. # Import arcpy module import arcpy # Provide a database connection file for the PostgreSQL administrator user. connection = "<user>/connections/<Connection_file>.sde" # Process: Create database user that can create data. arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1") - .py 拡張子を付けてファイルを保存します。
- ArcGIS Pro (Standard または Advanced) または ArcGIS Server がインストールされているコンピューターからスクリプトを実行します。
ArcGIS Server コンピューターからの Python の実行については、「ArcGIS Server および ArcPy」をご参照ください。
これで、テーブル、フィーチャクラス、およびビューを作成する権限を持つログイン ユーザー ロールがデータベースに作成されました。
新しいユーザーは、データベースに接続してデータセットを作成できます。 続いて、他のユーザーに権限を付与できます。 手順については、「データベースとエンタープライズ ジオデータベースの権限の付与と取り消し」をご参照ください。
SQL を使用したログインの作成
SQL を使用してロールを作成できます。 ただし、PostgreSQL のジオデータベースで実行する場合は、パブリック グループまたは特定のロールが、一時テーブルを作成する権限を持っていることを確認してください。 これはすべてのユーザーに必要です。他のデータベース オブジェクトを作成しないユーザーでも同様です。
ユーザー タイプごとに必要な権限については、「PostgreSQL でのジオデータベースの権限」をご参照ください。
ロールの作成
以下では、権限管理を簡単にするために psql を使用してグループ ロールを作成する手順、およびグループ ロールに所属するログイン ロールを作成する手順について説明します。
- データベース クラスターに他のロールを作成する権限を持つユーザーとして psql にサイン インします。
これには、スーパーユーザー ステータスを持つログイン、または createrole 権限が付与されているログインを使用できます。
- ログイン グループを作成するには、create role コマンドを使用します。
この例では、データ作成者、データ編集者、およびデータ参照者に権限を付与するグループ ロールが作成されます。
CREATE ROLE owners NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT; CREATE ROLE editors NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT; CREATE ROLE viewers NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT; - グループ メンバーが実行する必要のある操作に基づいて、各グループ ロールに必要な権限を付与します。
ジオデータベースのロールに対して権限を付与する場合は「PostgreSQL でのジオデータベースの権限」を、データベースにジオデータベースが含まれていない場合は「ArcGIS で PostgreSQL データベースを使用するための権限」をご参照ください。
- 固有のデータベース オブジェクトに対応するスキーマを持つログイン ロールを作成し、そのログイン ロールを所有者グループ ロールに配置します。
CREATE ROLE geodataowner1 LOGIN ENCRYPTED PASSWORD '' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE owners; CREATE SCHEMA geodataowner1 AUTHORIZATION geodataowner1;ログイン ロールおよび対応するスキーマ名を変更し、データベース オブジェクトを作成するログインごとにステートメントを再実行します。
- editors グループのメンバーになるログイン ロールを作成します。
この例では、暗号化パスワードを使用して、ログイン ロール (editor1) を作成します。 このロールはスーパーユーザー ステータスを持っていないので、データベースを作成できず、ロールをデータベース クラスターに作成できません。 ただし、このロールはグループ ロール editors のメンバーになっているため、このグループ ロールから権限を継承します。
ログイン ロール名を変更し、ステートメントを再び実行して、ジオデータベースのデータを編集できるその他のログイン ロールを作成します。CREATE ROLE editor1 LOGIN ENCRYPTED PASSWORD '' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE editors; - viewers グループのメンバーになるログイン ロールを作成します。
この例では、暗号化パスワードを使用して、ログイン ロール (reader1) を作成します。 このロールはスーパーユーザー ステータスを持っていないので、データベースを作成できず、ロールをデータベース クラスターに作成できません。 ただし、このロールはグループ ロール viewers のメンバーになっているため、このグループ ロールから権限を継承します。
ログイン ロール名を変更し、ステートメントを再び実行して、ジオデータベースのデータを表示する権限のみを持つその他のログイン ロールを作成します。CREATE ROLE reader1 LOGIN ENCRYPTED PASSWORD '' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE viewers; - 手順 4 で作成したスキーマに対する usage 権限を viewers および editors ログイン グループに付与します。
usage 権限により、グループ ロールのメンバーはスキーマのデータにアクセスできるようになります。 この権限がなければ、データ所有者は、各データセットに対する権限をグループ ロールのメンバーに付与することができません。
GRANT USAGE ON SCHEMA geodataowner1 TO viewers; GRANT USAGE ON SCHEMA geodataowner1 TO editors; - ジオデータベース用のこれらのログインを作成する場合、および、パブリック グループが sde スキーマに対する usage 権限を持つことがないように sde スキーマ権限を変更した場合は、sde スキーマに対する usage 権限を owners、editors、および viewers グループに付与します。
GRANT USAGE ON SCHEMA sde TO owners; GRANT USAGE ON SCHEMA sde TO editors; GRANT USAGE ON SCHEMA sde TO viewers;
これで、データを作成する 1 つ以上のユーザー、データを編集する 1 つ以上のユーザー、およびデータを表示する 1 つ以上のユーザーがデータベースに作成されました。
各ユーザーは、データベースへの接続を作成する必要があります。
データ所有者は、データベースまたはジオデータベースにデータセットを作成すると、ArcGIS ツールを使用して、データセットに対する select 権限を viewers グループに付与し、データセットに対する select、insert、update、および delete 権限を editors グループに付与することができます。 手順については、「データベースとエンタープライズ ジオデータベースの権限の付与と取り消し」をご参照ください。