# APIを使用したポリシーベースのデータベース権限の設定

APIを使用してデータベース権限を設定し、個々のユーザーに特定のデータベースへのアクセスを許可できます。

各アカウントで、以下の権限を使用してデータベースへのユーザーアクセスを設定できます：

| 権限 | 説明 |
|  --- | --- |
| Manage | ユーザーはowner_manage、download、edit、query、importを含むすべての権限を持ち、アカウント内のデータベースに対してあらゆる操作を実行できます。（Treasure コンソールでは_Full Access_カテゴリに表示されます） |
| Download | ユーザーは指定されたデータベースをダウンロードする権限を持ちます。（Treasure コンソールでは_Limited Access_カテゴリにのみ表示されます） |
| Owner_Manage | ユーザーは自分のデータベースを管理できます。（Treasure コンソールでは_Limited Access_カテゴリの_Manage Own Database_として表示されます） |
| Import | ユーザーはアカウント内の任意のデータベースに対してインポートジョブを実行できます。（Treasure コンソールでは_Import Only_として表示されます） |
| Query | ユーザーはアカウント内の任意のデータベースを表示し、クエリを実行できます。（Treasure コンソールでは_Query Only_として表示されます） |
| Edit | ユーザーは指定されたアカウントに対する編集権限を持ちます。（Treasure コンソールでは_General Access_として表示されます） |


詳細は[ポリシーベースのデータベース権限について](/products/control-panel/security/policies/about-policy-based-database-permissions)をご覧ください。

## データベース管理権限の設定

manage権限を使用して、ユーザーにデータベースへのフルアクセスを付与できます。これにより、owner_manage、download、edit、query、importを含むすべての権限に加えて、アカウント内のデータベースに対するあらゆる操作を実行する権限がユーザーに付与されます。


```bash
$ curl --location --request PATCH \
'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{"Databases": [{"operation": "manage"}]}'
```

## データベースダウンロード権限の設定

ユーザーのデータベースアクセスをdownloadに設定し、指定されたデータベースをダウンロードする権限を付与します。


```bash
$ curl 'https://{{host}}/v3/access_control/policies/{{policy_id}}/permissions' \
-X 'PATCH' \
--data-raw '{"Databases":[{"operation":"download"}]}'
```

## データベースOwner_Manage権限の設定

ユーザーのデータベースアクセスをowner_manageに設定し、自分のデータベースを管理する権限を付与します。


```bash
curl 'https://{{host}}/v3/access_control/policies/{{policy_id}}/permissions' \
-X 'PATCH' \
--data-raw '{"Databases":[{"operation":"owner_manage"}]}'
```

## データベースインポート権限の設定

ユーザーのデータベースアクセスをimportに設定し、アカウント内のデータベースに対してデータインポートジョブを実行する権限を付与します。


```bash
curl --location --request PATCH 'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "Databases": [
        {"operation": "import", "ids": <db_id>}
    ]
}
'
```

## データベースクエリ権限の設定

ユーザーのデータベースアクセスをqueryに設定し、アカウント内の特定のデータベースを表示してクエリを実行する権限を付与します。


```bash
curl --location --request PATCH 'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "Databases": [
        {"operation": "query", "ids": <db_id>}
    ]
}
'
```

## データベース編集権限の設定

ユーザーのデータベース権限をeditに設定し、アカウント内のデータベースを編集する権限を付与します。


```bash
curl --location --request PATCH 'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "Databases": [
        {"operation": "edit", "ids": <db_id>}
    ]
}'
```

## APIを使用したデータベースポリシーの更新

以下の呼び出しを行うことで、データベースポリシーを更新できます。

1. ポリシーIDを使用して、更新したいポリシーを取得します。例えば、ポリシーの現在の権限を表示できます：database(10)への_manage_、*edit*、database(1,2,3)への_query_、database(5,4)への_import_。



```bash
curl --location --request GET 'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>'
```


```json
 {
  "Databases": [
    {"operation":"manage"},
		{"operation": "edit", "ids": "10"},
    {"operation": "query", "ids": "1,2,3"},
    {"operation": "import", "ids": "5,4"}
  ]
}
```

1. PATCHを使用して、権限を_manage_、database(1,3)への_query_、database(2,5,6)への_import_のように更新できます。



```bash
curl --location --request PATCH 'https://api.treasuredata.com/v3/access_control/policies/<policy_id>/permissions' \
--header 'Authorization: TD1 <api_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "Databases": [
         {"operation": "manage"},
         {"operation": "query", "ids": "1,3"},
         {"operation": "import", "ids": "2,5,6"}
    ]
}'
```