権限ポリシー を通じて ロール と スコープ を割り当て、Developer Platform リソースへのアクセス者と、その操作内容を制御できます。各ポリシーは、許可する操作を定義するロールと、操作が適用される場所を定義するスコープを組み合わせます。
Developer Platform 製品では、スコープを 3 つのレベルで設定できます。
| レベル | スコープ | 使う場面 |
|---|---|---|
| プラットフォーム | アカウント上のすべての製品 | Workers、R2、D1、KV、Durable Objects、Queues、Workers AI、Vectorize、Hyperdrive、その他の Developer Platform リソース全体へのアクセスを付与したいとき。 |
| 製品 | 1 つの製品内のすべてのリソース | 他の製品へのアクセスを付与せずに、すべての Workers、すべての R2 バケット、またはすべての D1 データベースへのアクセスを付与したいとき。 |
| リソース | 製品内の 1 つのリソース | 個別の Worker や R2 バケットなど、特定のリソースへのアクセスを付与したいとき。 |
付与したい権限のレベルを定義するには、次のいずれかのロールを割り当てます。
| ロール | 許可する内容 |
|---|---|
| Metadata Read-Only | リソース一覧、設定、メトリクス、ログ、トレースを表示します。コード、データ、保存オブジェクトなどの製品コンテンツは表示できません。 |
| Content Read-Only | Metadata Read-Only のすべてに加え、Worker コード、D1 データベースの行、R2 オブジェクトなどの製品コンテンツを読み取れます。変更はできません。 |
| Editor | Content Read-Only のすべてに加え、製品コンテンツと設定を更新できます。リソースの作成や削除はできません。 |
| Admin | リソースの作成と削除を含む完全な制御です。 |
Developer Platform の権限は 2 通りで付与できます。
| 付与の種類 | 向いている用途 | しくみ |
|---|---|---|
| Members と User Groups | ダッシュボードまたは API を使う人 | メンバーがダッシュボードにサインインするか API に認証すると、権限が継承されます。 |
| API トークン | CI/CD システム、自動化、サービスアカウント | トークン作成時に選んだ製品とリソースの権限だけをトークンが受け取ります。 |
ロール を メンバー または User Group に割り当てると、そのユーザーが Cloudflare ダッシュボードまたは API を使うときにその権限が適用されます。
たとえば、プラットフォームレベルでメンバーに Metadata Read-Only を割り当てると、アカウント上のすべての Developer Platform 製品(Workers、R2、D1 など)の設定、メトリクス、ログ、トレースを表示できますが、コード、データ、保存オブジェクトなどの製品コンテンツは表示できません。
Workers 製品レベルで Metadata Read-Only を割り当てると、アカウント上のすべての Workers の設定と可観測性データを表示できますが、R2、D1、その他の製品は見えません。
単一の Worker に Metadata Read-Only を割り当てると、その Worker の設定と可観測性データだけが見えます。他の Workers や他の製品は見えません。
同じチームやプロジェクトの複数人が同じアクセスを必要とする場合は、各メンバーに権限を割り当てる代わりに User Group を作成します。
権限ポリシーをグループに割り当て、関連するメンバーを追加します。各メンバーはグループのポリシーを自動的に継承します。
CI/CD パイプライン、エージェント、スクリプト、その他の自動化システムがプログラムで Developer Platform リソースにアクセスする必要がある場合は、API トークン を使います。
たとえば、Worker コードの更新とデプロイが必要なデプロイパイプラインには、Workers Editor を持つ API トークンを作成します。
API トークンは製品レベルと、利用可能な場合はリソースレベルの権限に対応します。プラットフォームレベルの権限には対応しません。API トークンに幅広い Developer Platform アクセスを付与するには、トークンが必要とする各製品の製品レベル権限を選びます。
Wrangler で細かい権限を使うには、アカウント所有の API トークンで認証します。
アカウント所有の API トークンで Wrangler を認証するには、必要な権限だけを持つトークンを作成し、次の環境変数を設定します。
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
export CLOUDFLARE_ACCOUNT_ID="<YOUR_ACCOUNT_ID>"Wrangler はトークンの権限を使います。トークンが特定の Worker にスコープされている場合、Wrangler はその Worker で許可された操作だけを実行できます。
Wrangler コマンドは、管理対象によって必要な権限が異なります。
| やりたいこと | Wrangler コマンドの例 | 必要なアクセス |
|---|---|---|
| 既存の Worker をデプロイする | wrangler deploy |
その Worker にスコープした Editor、または Workers 製品スコープの Editor。 |
| 新しい Worker を作成する | まだ存在しない Worker に対する wrangler deploy |
Workers 製品スコープの Admin。 |
| 1 つの Worker のログを tail する | wrangler tail |
その Worker にスコープした Metadata Read-Only、または Workers 製品スコープの Metadata Read-Only。 |
| KV namespace を一覧する | wrangler kv namespace list |
KV を含むスコープでの Developer Platform Metadata Read-Only。 |
| KV namespace を作成する | wrangler kv namespace create |
KV を含むスコープでの Developer Platform Admin。 |
| デプロイ中に Routes または Custom Domains を変更する | wrangler deploy |
Worker の Editor に加え、影響を受けるすべてのゾーンの Workers Routes Write。 |
Workers KV、R2、D1 などのリソースへの バインディング を持つ Worker をデプロイするには、その Worker への Editor アクセスが必要です。Worker をデプロイするために、バインド先リソースへの別権限は不要です。
バインド先リソースへの権限が必要になるのは、それらのリソースに直接アクセスする場合だけです。たとえば、KV キーの読み取り、D1 データベースのクエリ、R2 オブジェクトの一覧です。
| ユースケース | スコープ | ロール |
|---|---|---|
| すべての製品の設定、ログ、メトリクスを表示する | プラットフォーム | Metadata Read-Only |
| Worker コードを変更せずに読む | Workers 製品 | Content Read-Only |
| 既存の任意の Worker をデプロイし、他製品にはアクセスしない | Workers 製品 | Editor |
| デプロイ中に Routes または Custom Domains を変更する | Workers 製品と影響を受ける各ゾーン | Editor と Workers Routes Write |
| 既存の Worker の名前を変更する | 個別の Worker または Workers 製品 | Editor |
| Workers を作成または削除する | Workers 製品 | Admin |
| CI/CD またはエージェントからの自動デプロイ | Workers 製品の API トークン | Editor |
| 特定の 1 つの Worker への自動デプロイ | 個別 Worker の API トークン | Editor |