データセット権限の付与と取り消し

Standard または Advancedのライセンスで利用可能。

他のデータベース ユーザーがデータベースのデータの内容を表示または変更できるようにしたい場合は、そのための権限を付与する必要があります。

[権限] ダイアログ ボックス、 [権限の変更 (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 コンピューターから実行できます。複数のデータセットに対する権限を変更できます。

権限ダイアログ ボックスの使用

  1. 所有している権限を付与または取り消すデータを含む、データベースまたはジオデータベースに接続します
  2. データセットを右クリックして、[管理] をポイントしてから [権限] をクリックします。
  3. 権限を変更したいユーザーまたはロールがリスト内にすでにある場合、付与または取り消す権限のボックスをオン/オフにしてから、[OK] をクリックして変更を適用します。
    メモ:

    すべての権限のボックスをオフにすると、そのユーザーまたはロールがリストから削除されます。

  4. ユーザーまたはロールがすでにリストにない場合、次の操作を実行します。
    1. [ユーザーの追加] をクリックして、[ユーザー/ロール] ダイアログ ボックスを開きます。
    2. データベース内のすべてのユーザーとロールをリストするシステム テーブルを表示するデータベース権限を持つ場合、名前の横にあるボックスをオンにすることで、リストから追加したいデータベース ユーザーまたはロールを選択できます。
    3. [OK] をクリックして、[ユーザー/ロール] ダイアログ ボックスを閉じます。
    4. 新しい各ユーザーまたはロールに与える権限のボックスをオンにして、[OK] をクリックします。

権限の変更 (Change Privileges)ツールの使用

[権限の変更 (Change Privileges)] ツールを使用して、所有しているデータセットに対する権限を付与または取り消すことができます。このツールは [データ管理] ツールボックスの [ジオデータベース管理] ツールセットにあります。

このツールを使用して、一度に複数のデータセットに対するユーザーまたはグループの権限を変更できます。[権限の変更 (Change Privileges)] ツールには、ユーザーがすでにデータセットに対して持っている権限は表示されませんので、注意してください。また、INSERT、UPDATE、および DELETE 権限は、個別にではなくセットとして付与する必要があります。

  1. 権限を付与または取り消すデータセットの所有者としてジオデータベースまたはデータベースに接続します。
  2. [権限の変更 (Change Privileges)] ツールを開きます。
  3. データベース接続を参照し、権限を変更するデータセットを選択します。
  4. 変更対象の権限を所有するユーザーまたはグループの名前を入力します。
  5. [表示] ドロップダウン リストおよび [編集] ドロップダウン リストを使用して、指定したユーザーまたはグループに付与する権限を選択します。

    編集権限を付与するには、表示権限も付与する必要があります。

  6. [OK] をクリックしてツールを実行します。

Python スクリプトの使用

Python スクリプトを使用して、所有しているデータセットに対する権限の付与または取り消しを行う場合、ChangePrivileges_management 関数を使用できます。

  1. まず、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")

  2. ChangePrivileges_management 関数を実行します。

    この例では、3 つのデータセットに対する表示権限がグループ readers に付与されます。

    arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/eng1.properties,eng1.routes,eng1.demo", "readers", "GRANT", "AS_IS")