Standard または Advancedのライセンスで利用可能。
他のデータベース ユーザーがデータベースのデータの内容を表示または変更できるようにしたい場合は、そのための権限を付与する必要があります。
ArcMap で [権限] ダイアログ ボックスを使用するか、ArcMap または ArcGIS Pro で [権限の変更 (Change Privileges)] ジオプロセシング ツールを使用するか、Python スクリプトで ChangePrivileges_management 関数を使用して、特定のデータセットに対するユーザーまたはグループの権限を指定できます。
SELECT 権限だけを付与すると、ユーザーはデータセットの内容の読み取りと選択はできますが、変更することはできません。また、UPDATE、INSERT、DELETE の各権限を付与することもできます。この場合、ユーザーはデータセットの内容を変更することができます。
ArcGIS でデータベースまたはジオデータベースのデータの権限を設定する場合、次のルールが適用されます。
- テーブルの権限を変更できるのは、テーブルの所有者だけです。
- テーブルを削除したりその定義を変更したりできるのは、その所有者だけです。そのため、別のユーザーがデータセットに対して INSERT、UPDATE、DELETE の権限を与えられていても、そのユーザーがスキーマを変更することはできません。
- INSERT、UPDATE、DELETE の各権限をユーザーに付与する場合、SELECT 権限も付与する必要があります。ユーザーは、データセットを編集する前に、そのデータセットを読み取る必要があるからです。
- SQL Server データベースの [権限] ダイアログ ボックスの [ユーザー/ロール] リストには、dbo および db_owner ロールは表示されません。これらのユーザーには、データベース内のすべてのデータに対する権限が付与されています。権限はロールによって異なり、それらの権限を取り消すことはできません。
- データベースでスーパーユーザー ステータスが付与された PostgreSQL のログイン ロールまたはグループは、[権限] ダイアログ ボックスの [ユーザー/ロール] リストには表示されません。これらのユーザーは、すべてのデータに対してすべての権限が自動的に付与され、これらの権限を取り消すことはできません。
- [権限] ダイアログ ボックスを使用してユーザーの権限を変更できるのは、一度に 1 つのデータセットだけです。複数のデータセットの権限を一度に変更する場合は、代わりに [権限の変更 (Change Privileges)] ジオプロセシング ツールまたは Python 関数を使用します。
- 権限を取り消すには、データセットを排他ロックする必要があります。そのため、ユーザーがデータセットに接続している場合、そのデータセットに対するユーザーの権限を取り消すことはできません。
ジオデータベースのデータセットに対する権限の付与および取り消しには、次のルールのみが適用されます。
- フィーチャ データセット内のすべてのフィーチャクラスは、同じ権限が適用されている必要があります。
- 1 つのリレーションシップ クラスに属するフィーチャクラスまたはテーブルに権限を付与するときには、関連元クラスと関連先クラスの両方に権限を付与する必要があります。関連元フィーチャクラスと関連先フィーチャクラスが同じフィーチャ データセット内にあるときは、どちらのフィーチャクラスも同じ権限のセットを持ちます。これは、権限がフィーチャ データセットのレベルで付与されるためです。しかし、関連元クラスまたは関連先クラスが同じフィーチャ データセット内にないときは、両方のクラスに適切な権限が付与されるようにしなければなりません。リレーションシップ クラスが属性付きか、多対多の基数を持つ場合は、関連元クラスに権限を付与したときに、中間テーブルに権限が自動的に反映されます。
- データセットがバージョン対応登録されていない場合、[権限] ダイアログ ボックスを使用して、UPDATE、INSERT、DELETE の各権限の付与または取り消しを個別に行うことができます。たとえば、ユーザーに SELECT と UPDATE 権限を付与すると、そのユーザーはデータセットに接続して、既存のフィーチャを変更することはできますが、新しいフィーチャを追加したり、既存のフィーチャを削除したりすることはできません。
- データセットがバージョン対応登録されている場合、データセットを変更できる権限 (UPDATE、INSERT、DELETE) をグループとして付与および取り消す必要があります。
- データセットがバージョン対応登録されている場合、ジオデータベース管理者はそのデータセットに対して全権限を持つ必要があります。そのため、バージョン対応登録されたデータセットに対して、ジオデータベース管理者の権限を取り消すことはできません。
所有しているデータセットに対する権限を付与または取り消すには、以下の方法のいずれかを使用します。
- [権限] ダイアログ ボックス - [権限] ダイアログ ボックスを使用すると、ユーザーまたはグループが特定のデータセットに対してすでに持っている権限を表示できます。データセットに対する権限を、一度に複数のユーザーまたはグループに付与することもできます。
- [権限の変更 (Change Privileges)] ツール - [権限の変更 (Change Privileges)] ツールを使用すると、複数のデータセットに対する権限をユーザーまたはグループに付与できます。
- Python スクリプト - Python スクリプトを、ArcGIS Server がインストールされている Linux コンピューターから実行できます。複数のデータセットに対する権限を変更できます。
権限ダイアログ ボックスの使用
[カタログ] ツリーのデータベース接続のショートカット メニューから [権限] ダイアログ ボックスを開きます。このダイアログ ボックスを使用して、ユーザーおよびグループのリストから選択して権限を付与できます。また、データセットがバージョン対応登録されていない場合は、データセットに INSERT、UPDATE、および DELETE 権限を個別に付与することもできます。
- ArcMap または ArcCatalog を起動し、カタログ ツリーで [Database Connections] フォルダーをダブルクリックします。
- 所有している権限を付与または取り消すデータを含む、データベースまたはジオデータベースに接続します。
- データセットを右クリックして、[管理] をポイントしてから [権限] をクリックします。
[権限] ダイアログ ボックスが開きます。
- 権限を変更したいユーザーまたはロールがリスト内にすでにある場合、付与または取り消す権限のボックスをオン/オフにしてから、[OK] をクリックして変更を適用します。
- ユーザーまたはロールがすでにリストにない場合、次の操作を実行します。
- [追加] をクリックして、[ユーザー/ロール] ダイアログ ボックスを開きます。
- データベース内のすべてのユーザーとロールをリストするシステム テーブルを表示するデータベース権限を持つ場合、名前の横にあるボックスをオンにすることで、リストから追加したいデータベース ユーザーまたはロールを選択できます。この権限がない場合は、権限を付与するデータベース ユーザー、データベース ロール、オペレーティング システム ログイン、または Windows グループの名前を入力します。複数のユーザーまたはグループを入力するには、名前をカンマで区切って入力します (スペースは挿入しません)。
- [OK] をクリックして、[ユーザー/ロール] ダイアログ ボックスを閉じます。
- 新しい各ユーザーまたはロールに与える権限のボックスをオンにして、[OK] をクリックします。
権限の変更 (Change Privileges)ツールの使用
[権限の変更 (Change Privileges)] ツールを使用して、所有しているデータセットに対する権限を付与または取り消すことができます。このツールは [データ管理] ツールボックスの [ジオデータベース管理] ツールセットにあります。
このツールを使用して、一度に複数のデータセットに対するユーザーまたはグループの権限を変更できます。[権限の変更 (Change Privileges)] ツールには、ユーザーがすでにデータセットに対して持っている権限は表示されませんので、注意してください。また、INSERT、UPDATE、および DELETE 権限は、個別にではなくセットとして付与する必要があります。
- 権限を付与または取り消すデータセットの所有者としてジオデータベースまたはデータベースに接続します。
- [権限の変更 (Change Privileges)] ツールを開きます。
- データベース接続を参照し、権限を変更するデータセットを選択します。
- 変更対象の権限を所有するユーザーまたはグループの名前を入力します。
- [表示] ドロップダウン リストおよび [編集] ドロップダウン リストを使用して、指定したユーザーまたはグループに付与する権限を選択します。
編集権限を付与するには、表示権限も付与する必要があります。
- [OK] をクリックして、このツールを実行します。
Python スクリプトの使用
Python スクリプトを使用して、所有しているデータセットに対する権限の付与または取り消しを行う場合、ChangePrivileges_management 関数を使用できます。
- まず、CreateDatabaseConnection_management 関数を使用してデータベース接続を作成します。データセットの所有者として接続し、ファイルにユーザー名を保存する必要があります。
この例では、接続ファイル gdb.sde を /usr/connections ディレクトリに作成します。ユーザー eng1 として reef/orcl インスタンスへの接続が確立されます。
import arcpy arcpy.CreateDatabaseConnection_management (r'/usr/connections', "gdb.sde", "ORACLE", "reef/ORCL", "DATABASE_AUTH", "eng1", "T!i569", "SAVE_USERNAME")
- ChangePrivileges_management 関数を実行します。
この例では、3 つのデータセットに対する表示権限がグループ readers に付与されます。
arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/eng1.properties,eng1.routes,eng1.demo", "readers", "GRANT", "AS_IS")