新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

ドメインスコープ指定ロール - 早期アクセス

2022-03-18

4分で読了
この投稿はEnglishおよび简体中文でも表示されます。

本日、Cloudflareは、ドメイン群へのユーザーアクセスのスコープ設定を可能にすることで、Enterpriseアカウントをお持ちのお客様へチCloudflareに対するチームのアクセス管理を容易にします。ユーザーのアクセス権を必要な分にとどめることは非常に重要であり、ドメインスコープ指定ロールは大きな前進をもたらします。さらに、ドメイングループの導入により、アカウント所有者はユーザーにドメインへのアクセス権を個別ではなくグループ単位で付与することができます。これらのグループにドメインを追加または削除することができ、グループへのアクセス権を持つ人のアクセスは自動的に更新されます。これにより、ユーザーアクセス管理の手間が軽減されます。

ドメインスコープ指定ロールの最も一般的な使い方の1つは、一部のメンバーに限定して本番用ドメインへのアクセス権を開放し、その他のメンバーに開発用ドメインとステージング用のドメインを開放することです。この方法では、アクセス権が与えられていない限り、誰かが本番用ドメインに変更を加えることはできません。

ドメインスコープ指定ロールの使い方

企業のお客様は、CSMにご相談の上、ご登録をお願いします。なお、アカウントメンバーシップを変更するには、スーパーアドミニストレーターの権限が必要です。

ベータ版の利用が可能になった後の利用開始方法はこちらから:

  • dash.cloudflare.comにログインしてアカウントを選択し、メンバーページに移動してください。

    • ここから、ドメインスコープ指定ロールを持つ新しいメンバーを招待するか、既存のユーザーの権限を変更することができます。今回は、新規ユーザーを招待することにします。

  • 新メンバーを招待する場合、提供するものは3つあります:

    • どのユーザーを招待するか。

    • どのリソースにアクセスできるようになるかのスコープ。

      • 「すべてのドメイン」を選択すると、従来のロールを選択することができます。

    • どのような権限を付与するかを決定するロール(複数可)。

  • 招待を送る前に、ユーザーやスコープ、ロールを確認することができます。

Membership invitation page with users, scope, and role selection.

ドメイングループ

Membership invite confirmation screen.

アカウント所有者は、ユーザーごとに手動で包含リストや除外リストを作成するだけでなく、ドメイングループを作成して、1人または複数のユーザーをドメインのグループに許可することもできます。ドメイングループは、メンバー招待フローから、またはアカウント設定 -> リストから直接作成できます。ドメイングループを作成する際、ユーザーは含めるドメインを選択し、その時点から、アカウントにユーザーを招待する際にそのグループを使用することができます。

ドメイングループ作成画面

メンバー招待時のドメイングループ選択

Domain Group creation screen showing two domains selected.

Bachの紹介

Member invite screen showing the scope of a user’s access being limited to a domain group named, “Test Domains”.

ドメインスコープ指定ロールが可能になったのは、Bachと呼ばれる新しい権限システムがあるからです。Bachは、Cloudflareのコントロールプレーンに対する承認を定義するための、ポリシーベースのシステムを提供します。承認とは、誰かがシステムで何ができるかを定義するものです。BachはこれまでAPI Tokensを支えてきましたが、今後はすべての承認にBachが使われるようになります。これにより、お客様はより詳細な権限とリソースのスコープ指定を定義することができるようになります。リソースとは、アカウント、ゾーン、ワーカー環境、DNSレコードなど、ユーザーが操作するあらゆるオブジェクトのことです。以前のCloudflareのRBACシステムは、各ロールがアカウント全体に適用される広範な権限を定義するロールのセットを割り当てることに依存していましたが、Bachのポリシーでは、リソースのセットにスコープすることができる、より深い権限付与を可能にします。

従来のシステムと、Bachがサポートするものを比較してみましょう。一般的に、ユーザーの権限は、割り当てられた「ロール」によって定義されます。これには、例えば「スーパーアドミニストレーター」、「アドミニストレーター」、「Cloudflare for Teams」および「Cloudflare Workers Admin」などが挙げられます。従来のシステムでは、これらはそれぞれ「workers:read」、「workers:edit」または「zones:edit」といった明示的で単純な権限のセットにマッピングされています。Cloudflare APIやCloudflareダッシュボードからリクエストがあると、CloudflareのAPI Gatewayは、リクエストされたエンドポイントに対して、アクターがそのアクションを実行するのに適切な権限を持っているかどうかを確認します。ゾーン設定を変更するためには、アクターは、多くのロールのうちの1つから付与できる「zone:edit」権限を持つ必要があります。以下は、従来のシステムで「DNS」権限のみを持つユーザーに付与されるものです:

従来のDNSのユーザーロール権限

権限

編集

読み取り

DNSレコード

法務関連

アカウント

サブスクリプション

ゾーン

ゾーン設定

分かりやすい反面、多くの欠点がありました。まず、リソースのセットであれ、リソースの属性であれ、権限が適用されるリソースの制限を定義できないことです。次に、特定の「リソース」に対する権限は、読み取りまたは編集のみで、編集には作成と削除が含まれます。これでは、例えば、編集を許可しながら削除を制限するというような、存在し得るニーズを完全に把握することはできません。

Bachでは、承認のためのきめ細かい権限を定義する機能が拡張されています。前述の「DNS」メンバーのアクセス権を定義するポリシーの例は、次のようになります:

Bach DNSユーザーロールポリシー

(読みやすいように若干の修正を加えています)

定義される権限の粒度が高くなっているのがわかると思います。どちらの場合も、ユーザーは同じアクションを実行できますが、粒度が高いということは、何ができるかをより明確にしているということです。ここではDNSレコード(com.cloudflare.api.account.zone.dns-record以下)に対して、作成、読み取り、更新、削除およびリストの権限が明示的に設定されていることがわかります。リソースグループセクションでは、スコープセクションがアカウントを定義していることがわかります。そのアカウントにあるドメインのようなオブジェクトは、「objects」の「*」の値にマッチします。これは、これらの権限がアカウント全体に適用されることを意味します。では、このユーザーの権限を単一のドメインにスコープされるように変更し、ポリシーがどのように変更されるかを見てみましょう。

#Legacy DNS Role - applies to all zones
  policies:
  - id: 186f95f3bda1443c986aeb78b05eb60b
    permission_groups:
    - id: 49ce85367bae433b9f0717ed4fea5c74
      name: DNS
      meta:
        description: Can edit DNS records.
        editable: 'false'
        label: dns_admin
        scopes: com.cloudflare.api.account
      permissions:
      - key: com.cloudflare.registrar.domain.read
      - key: com.cloudflare.registrar.domain.list
      - key: com.cloudflare.registrar.contact.read
      - key: com.cloudflare.registrar.contact.list
      - key: com.cloudflare.api.account.secondary-dns.update
      - key: com.cloudflare.api.account.secondary-dns.read
      - key: com.cloudflare.api.account.secondary-dns.delete
      - key: com.cloudflare.api.account.secondary-dns.create
      - key: com.cloudflare.api.account.zone.secondary-dns.update
      - key: com.cloudflare.api.account.zone.secondary-dns.read
      - key: com.cloudflare.api.account.zone.secondary-dns.delete
      - key: com.cloudflare.api.account.zone.secondary-dns.create
      - key: com.cloudflare.api.account.notification.*
      - key: com.cloudflare.api.account.custom-ns.update
      - key: com.cloudflare.api.account.custom-ns.list
      - key: com.cloudflare.api.account.custom-ns.*
      - key: com.cloudflare.edge.spectrum.app.list
      - key: com.cloudflare.edge.spectrum.app.read
      - key: com.cloudflare.api.account.zone.custom-page.read
      - key: com.cloudflare.api.account.zone.custom-page.list
      - key: com.cloudflare.api.account.zone.setting.read
      - key: com.cloudflare.api.account.zone.setting.list
      - key: com.cloudflare.api.account.zone.dnssec.update
      - key: com.cloudflare.api.account.zone.dnssec.read
      - key: com.cloudflare.api.account.dns-firewall.cluster.delete
      - key: com.cloudflare.api.account.dns-firewall.cluster.update
      - key: com.cloudflare.api.account.dns-firewall.cluster.read
      - key: com.cloudflare.api.account.dns-firewall.cluster.create
      - key: com.cloudflare.api.account.dns-firewall.cluster.list
      - key: com.cloudflare.api.account.zone.dns-record.delete
      - key: com.cloudflare.api.account.zone.dns-record.update
      - key: com.cloudflare.api.account.zone.dns-record.read
      - key: com.cloudflare.api.account.zone.dns-record.create
      - key: com.cloudflare.api.account.zone.dns-record.list
      - key: com.cloudflare.api.account.zone.page-rule.read
      - key: com.cloudflare.api.account.zone.page-rule.list
      - key: com.cloudflare.api.account.zone.railgun-connection.read
      - key: com.cloudflare.api.account.zone.railgun-connection.list
      - key: com.cloudflare.api.account.zone.subscription.read
      - key: com.cloudflare.api.account.zone.aml.read
      - key: com.cloudflare.api.account.zone.read
      - key: com.cloudflare.api.account.zone.list
      - key: com.cloudflare.api.account.audit-log.read
      - key: com.cloudflare.api.account.custom-page.read
      - key: com.cloudflare.api.account.custom-page.list
      - key: com.cloudflare.api.account.railgun.read
      - key: com.cloudflare.api.account.railgun.list
      - key: com.cloudflare.api.account.dpa.read
      - key: com.cloudflare.api.account.subscription.read
      - key: com.cloudflare.api.account.subscription.list
      - key: com.cloudflare.api.account.read
      - key: com.cloudflare.api.account.list
    resource_groups:
    - id: 2fe938e0a5824128bdc8c42f9339b127
      name: com.cloudflare.api.account.a67e14daa5f8dceeb91fe5449ba496eb
      meta:
        editable: 'false'
      scope:
        key: com.cloudflare.api.account.a67e14daa5f8dceeb91fe5449ba496eb
        objects:
        - key: "*"
    access: allow

ドメインスコープ指定ポリシーのあるBach DNSユーザーロール

(読みやすいように若干の修正を加えています)

ユーザーの権限を1つの明示的なゾーンのみに限定すると、主に2つの違いが見られます。まず、権限が大幅に削減されます。これは、従来のアカウントをスコープしたロールが付与する、多くのアカウントレベルのリソースの読み取りや一覧表示へのアクセスをユーザーに与えないためです。付与されるアカウントレベルの権限は、account.read、_subscriptions.read_および_subscriptions.list_だけです。これらの権限は、ユーザーがダッシュボードを使用できるようにするために必要です。ダッシュボードでアカウントを表示する場合、表示されるアカウントレベルの製品はドメインのみです。Cloudflare WorkersやZero Trustなど、その他の製品は非表示になります。

# Zone Scoped DNS role - scoped to 1 zone
policies:
- id: 80b25dd735b040708155c85d0ed8a508
  permission_groups:
  - id: 132c52e7e6654b999c183cfcbafd37d7
    name: Zone DNS
    meta:
      description: Grants access to edit DNS settings for zones in an account.
      editable: 'false'
      label: zone_dns_admin
      scopes: com.cloudflare.api.account.zone
    permissions:
    - key: com.cloudflare.api.account.zone.secondary-dns.*
    - key: com.cloudflare.api.account.zone.dnssec.*
    - key: com.cloudflare.api.account.zone.dns-record.*
    - key: com.cloudflare.api.account.zone.analytics.dns-report.*
    - key: com.cloudflare.api.account.zone.analytics.dns-bytime.*
    - key: com.cloudflare.api.account.zone.setting.read
    - key: com.cloudflare.api.account.zone.setting.list
    - key: com.cloudflare.api.account.zone.rate-plan.read
    - key: com.cloudflare.api.account.zone.subscription.read
    - key: com.cloudflare.api.account.zone.read
    - key: com.cloudflare.api.account.subscription.read
    - key: com.cloudflare.api.account.subscription.list
    - key: com.cloudflare.api.account.read
  resource_groups:
  - scope:
      key: com.cloudflare.api.account.a67e14daa5f8dceeb91fe5449ba496eb
      objects:
      - key: com.cloudflare.api.account.zone.b1fbb152bbde3bd28919a7f4bdca841f
  access: allow

次に、リソースグループのスコープセクションで、ゾーンについて明示的に言及されているのが見受けられます(行X:  com.cloudflare.api.account.zone.b1fbb152bbde3bd28919a7f4bdca841f)。これは、ポリシーに記載されたゾーン権限が、その特定のゾーンにのみ適用されることを意味します。そのゾーンの他の機能にアクセスしようとしたり、他のゾーンのDNSを変更しようとしたりすると、Cloudflareによって拒否されます。

次は何を?

企業のお客様で、ドメインスコープ指定ロールの使用の開始に興味がある場合は、CSMに連絡して、早期アクセス期間を有効にしてください。今回の発表は、Coudflareの規模に合わせて構築された承認システムであるBachへの移行における重要なマイルストーンとなります。これにより、将来的には同じ機能をより多くの製品に拡大し、Cloudflareのすべてのサービスにおいて、お客様がチームのアクセスをよりコントロールしやすい承認システムを構築することができます。まだ始まったばかりですので、ご期待ください!

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
Security Weekセキュリティ製品ニュースDomain Scoped Roles

Xでフォロー

Cloudflare|@cloudflare

関連ブログ投稿

2024年10月24日 13:00

Durable Objects aren't just durable, they're fast: a 10x speedup for Cloudflare Queues

Learn how we built Cloudflare Queues using our own Developer Platform and how it evolved to a geographically-distributed, horizontally-scalable architecture built on Durable Objects. Our new architecture supports over 10x more throughput and over 3x lower latency compared to the previous version....

2024年10月08日 13:00

Cloudflare acquires Kivera to add simple, preventive cloud security to Cloudflare One

The acquisition and integration of Kivera broadens the scope of Cloudflare’s SASE platform beyond just apps, incorporating increased cloud security through proactive configuration management of cloud services. ...