# API を通じた認証パーミッションの設定

Treasure Data の Policy-Based Permissions を使用すると、どのユーザーが Treasure Data との間でデータのインポートおよびエクスポートを行えるかを選択できます。Treasure コンソール を通じてポリシーの設定、作成、ユーザーへの割り当てを行うことができますが、認証パーミッションまたはアクセス制御ポリシーは API を通じて設定する必要があります。これには、完全なパーミッションの設定、パーミッションの変更、または認証パーミッションの割り当てが含まれる場合があります。

API の操作は、Web Console で見られる設定とは異なります。UI での「View」という用語は、API を通じて認証パーミッションを設定する際には「use」になります。

管理者が認証に対する詳細なパーミッションを有効にしていない場合、同じ動作やペイロードが表示されない可能性があります。この機能を有効にするには、カスタマーサクセス担当者にお問い合わせください。

認証を設定する際には、基本的な用語を理解しておくことが重要です。

| **用語** | **説明** |
|  --- | --- |
| **Authentications**
 | Treasure Data がデータを交換するための認証を作成することを許可します:
- **use_limited**: ユーザーに表示および使用パーミッションを含む制限された認証セットを追加します。
- **use**: すべての認証に対するグローバルな表示および使用アクセスのパーミッションをユーザーに付与します
- **owner_manage**: ユーザーに自分自身の認証を作成し、自分が作成した認証の表示、使用、編集、削除を行うパーミッションを付与します。
- **full**: すべての認証に対するグローバルな表示、編集、使用アクセスのパーミッションをユーザーに付与します。

 |
| **Source**
 | 新しい認証を作成した後、データに使用するドキュメントの種類を指定して新しいソースを作成できます。この設定により、認証がアクセス可能な場合にソースへのアクセスパーミッションが有効になります。アクセス可能な認証は、所有している Authentication パーミッションに依存します。
たとえば、Authentications/use_limited を持っている場合、指定された認証からのみ作成されたソースにアクセスできます。
**注意:** Policy Based Permissions の最新バージョンでは、sources:full は sources:restricted になります。
 |
| **Destinations**
 | 認証を作成した後、クエリやアクティベーションを設定して、特定の場所にデータをエクスポートできます。利用可能なすべての宛先に対する使用パーミッションは、Authentications パーミッションに依存します。
**注意:** Policy Based Permissions の最新バージョンでは、destinations:full は destinations:restricted になります。
 |


ユーザーのアクティベーションへのアクセスは、マスターセグメントオーナーの認証パーミッションと自身の認証アクセスを組み合わせたものに依存します。[Audience Studio でのアクティベーションに認証パーミッションがどのように影響するか](/ja/products/control-panel/security/policies/how-authentications-permissions-affect-activations-in-the-audience-studio)をご確認ください。

## 前提条件

* ポリシー設定プロトコルに関する知識
* 既存のポリシーの ID
* 特定のユーザーに割り当てられた空のポリシー
* [Policy-Based Permissions](/ja/products/control-panel/security/policies/permission-policy-api) の API リファレンス


## ポリシー ID とポリシー名の既存リストの表示

次のコマンドを使用すると、既存のポリシーに関するすべての情報を取得できます。

1. コマンドラインから、GET コマンドを使用してポリシー API を呼び出し、ポリシー名または ID を取得します。



```http
GET /v3/access_control/policies
```

1. レスポンスには、id、account_id、ポリシー名、ポリシーの説明、特定のポリシーに割り当てられたユーザー数など、ポリシーに関する識別情報が含まれます。



```json
[
  {
    "id": 67,
    "account_id": 123,
    "name": "some_policy",
    "description": "written about the policy",
    "user_count": 3
  }
]
```

## ポリシー ID によるポリシーパーミッションのリストの表示

次のコマンドを使用すると、ポリシーのパーミッションに関する情報を取得できます。

1. GET コマンドと `policy_id` を使用して、ポリシーに関連付けられたパーミッションのリストを表示します。



```http
GET /v3/access_control/policies/:policy_id/permissions
```

1. レスポンスで特定のポリシーに定義されたパーミッションを確認します。



```json
{
  "WorkflowProject": [
    {
      "operation": "view"
  }
],
"WorkflowProjectLevel": [
  {
    "operation": "view",
    "name": "my_wf"
  }
],
"Segmentation": [
  {
    "operation": "full"
  }
],
         "MasterSegmentConfigs": [
           {
             "operation": "view"
           }
         ],
         "MasterSegmentConfig": [
           {
             "operation": "view",
             "id": "42"
           }
         ],
         "SegmentAllFolders": [
           {
             "operation": "view",
             "audience_id": "42"
           }
         ],
         "SegmentFolder": [
           {
             "operation": "view",
             "id": "42"
           }
         ],
         "Authentications": [
           {
             "operation": "use"
           }
         ],
         "Sources": [
           {
             "operation": "restricted"
           }
         ],
         "Destinations": [
           {
             "operation": "restricted"
           }
]
}
```

## ユーザーの既存のポリシーを表示する

次のコマンドを使用して、ユーザーのポリシーに関する情報を取得できます。

1. GETコマンドと`user_id`を使用して、ユーザーの現在のポリシーを表示します。



```http
GET /v3/access_control/users/:user_id/policies
```

1. レスポンスで特定のユーザーのポリシー権限を確認します。



```json
[
  {
    "id": 62,
    "account_id": 123,
    "name": "some_policy",
    "description": "written about the policy",
    "user_count": 3
  }
]
```

## 特定のユーザーにポリシーを割り当てる

次のコマンドを使用して、特定のユーザーにポリシーまたはポリシーグループを割り当てることができます。

1. PATCHコマンドと`user_id`を使用して、ユーザーのポリシーを更新します。



```http
PATCH /v3/access_control/users/:user_id/policies
```

1. ペイロードに、ユーザーのプロファイルに追加する新しいポリシーを追加します。



```json
{
  "policy_ids": [
    "62",
    "67"
  ]
}
```

## ユーザーポリシーと権限を検証する

1. `user_id`を使用してGETコマンドで、正しいポリシーと権限が追加されたことを確認できます。



```http
GET /v3/access_control/users/:user_id
```

1. レスポンスでユーザーのポリシー権限を確認します。



```json
{
  "account_id": "123",
  "user_id": "2629",
  "permissions": {
    "Authentications": [
      {
        "operation": "use"
      }
    ],
    "Sources": [
      {
        "operation": "restricted"
      }
    ],
    "Destinations": [
      {
        "operation": "restricted"
      }
    ]
  },
  "policies": [
    {
      "id": "67",
      "account_id": "123",
      "name": "some_policy",
      "description": ""
    }
  ]
}
```

## 認証権限をフルに設定する

認証をフル権限に設定するには、正しいポリシーIDで適切なAPIを呼び出す必要があります。

1. PATCHコマンドと特定のpolicy_idを使用して、ポリシー権限を設定します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、認証の操作をfullに設定します。



```json
{
  "Authentications": [
    {
      "operation": "full"
    }
  ]
}
```

## 認証権限をなしに変更する

認証に空の配列を渡すことで、認証権限をなしに設定できます。これは権限なしを示します。

1. PATCHコマンドを使用して認証権限を変更します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、認証に空の配列を設定します。



```json
{
  "Authentications": []
}
```

## 認証を表示のみに割り当て、ソース権限を制限付きに設定する

認証権限をuseに、ソース権限をrestrictedに割り当てることができます。この権限では、ユーザーは新しい認証を作成できませんが、認証リストを表示したり、新しいソースを作成したりすることができます。

1. PATCHコマンドを使用して認証権限を変更または設定します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、認証の操作をview、ソースの操作をrestrictedに設定します。



```json
{
  "Authentication": [
    {
      "operation": "use"
    }
  ],
  "Sources": [
    {
      "operation": "restricted"
    }
  ]
}
```

## use_limited権限の割り当て

以下のコマンドを使用して、指定された認証を表示および使用する権限をユーザーに割り当てることができます。

1. PATCHコマンドを使用して、use_limitedの認証権限を設定します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、指定された認証にuse-permissionを追加します。



```json
{
  "Authentications": [
    {
      "operation": "use_limited",
      "ids": "1,2,6,100"
    }
  ]
}
```

## owner_managed認証権限の割り当て

以下のコマンドを使用して、ユーザーが自分で認証を作成し、作成した認証を表示、編集、削除、使用できるように、認証にowner_manage権限を設定できます。

1. PATCHを使用して、owner_managedの認証権限を設定します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、ユーザーが自分の認証を作成および管理できるように`owner_manage`権限を付与します。



```json
{
  "Authentications": [
    {
      "operation": "owner_manage"
    }
  ]
}
```

## 認証とソースに対する権限の未割り当て

これらの権限の変数を削除することで、認証とソースの両方へのアクセスを制限できます。

1. PATCHコマンドを使用して、認証権限を変更します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、認証とソースの変数を削除し、空の配列を渡します。



```json
{
  "Authentications": [],
  "Sources": []
}
```

## 関連するソース権限を持つuse_limitedへの認証の割り当て

認証権限をuse_limitedに割り当てて、指定された認証内でのアクセスを制限できます。この権限により、ユーザーは指定されたリスト内の認証のみを表示できます。制限されたソース権限を追加すると、ユーザーはリスト内の認証から作成されたソースに対して完全な権限を持つことができます。

1. PATCHコマンドを使用して、認証権限を変更します。



```http
PATCH /v3/access_control/policies/:policy_id/permissions
```

1. ペイロードで、認証操作をuse_limitedに設定し、必要な特定の認証IDを追加し、ソース操作をrestrictedに設定します。



```json
{
  "Authentications": [
    {
      "operation": "use_limited",
      "ids": "1,2,3"
    }
  ],
  "Sources": [
    {
      "operation": "restricted"
    }
  ]
}
```