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

APIトークンの一般提供の発表

2019/08/30

5分で読了

CloudflareのAPI

Cloudflareは本日、Cloudflare APIで使用するスケーラブルで安全性の高いAPIトークンの一般提供を発表します。Cloudflareは、より良いインターネットの実現を目指し、エッジにおける顧客のプレゼンスの管理の簡素化に努めています。その方法の1つが、当社のすべての製品とサービスをAPIで構成可能にすることです。パートナーから企業、開発者まで、さまざまなお客様がCloudflareの管理を自動化したいと考えています。自動化は、APIを直接経由して行われる場合と、当社も維持に関わっているTerraform providerCloudflare-Go libraryなどのオープンソースソフトウェアを経由する場合があります。Cloudflareの管理を自動化されるお客様にとって、Cloudflareサービスを可能な限りセキュアに維持できることが重要です。

最低限の権限とそれが重要な理由

ソフトウェアシステムのセキュリティ保護は困難な仕事です。ソフトウェアの実行範囲を制限することは、間違いや悪意ある行為による影響の拡大を防ぐ良い防御法です。最小権限の原則は、任意のシステムで動作を実行するために必要なアクセス数の指針として役立ちます。これはJerome Saltzerが提唱した、「すべてのプログラムとシステムのすべての権限を持つユーザーが行使する権限は、ジョブ実行のために必要な最小数でなければならない」という原則です。 Cloudflareの場合は、多くのお客様が様々なドメインを持ち、多様なサービスを活用してトラフィックをルーティングしています。悪意ある人がシステムに不正にアクセスした場合、この人はシステムが持つ全てのアクセスを利用することができ、さらなる損害や情報盗難につながります。

APIトークンの機能が、この最小権限の原則にどのようにあてはまるのかを見ていきましょう。

APIトークンについて

APIトークンには、主に次の3つの機能があります。

  1. CloudflareのリソースによるAPIトークンのスコープ設定
  2. アクセス許可によるAPIトークンのスコープ設定
  3. 複数のAPIトークンのプロビジョニング

これらの各機能について、細かく説明します。

CloudflareのリソースによるAPIトークンのスコープ設定

Cloudflareは、通常ドメインに対応するゾーン単位でサービスの構成を分割します。さらに、一部のお客様は、それぞれ多数のゾーンを持つ複数のアカウントを持っています。APIにサービスへのアクセスを許可する際には、今あるジョブに関連するアカウントのリソースおよびゾーンにのみアクセスできるようにすることが重要です。APIトークンは、特定のアカウントと特定のゾーンのみを対象とするようスコープを設定することができます。一般的なユースケースとしては、ステージングゾーンと実運用ゾーンがある場合、APIトークンはステージングゾーンにのみ影響して実運用ゾーンにはアクセスしないよう制限することができます。

アクセス許可によるAPIトークンのスコープ設定

APIトークンを特定のゾーンのみにスコープ設定できるのは良いことですが、1つのゾーンには、ファイアウォールルールやページルール、ロードバランサーその他、多数の設定可能な異なるサービスが入っています。お客様のサービスが、トラフィックのパターンに応じた新しいファイアウォールルールのみを作成可能なサービスの場合、そのサービスにDNSレコードの変更も許可すると、最小権限の原則に反することになります。APIトークンを使用すると、各トークンのスコープを特定のアクセス許可に設定できます。複数のアクセス許可を組み合わせて、特定のユースケースに合わせたカスタムトークンを作成することができます。

複数のAPIトークン

複数のサービスの保護や高速化にCloudflareを使用する場合、CloudflareのAPIの変更は、異なるサーバーやVM、コンテナ、workerから行うことになります。サービスごとにAPIトークンを作成できるということは、各サービスは互いの変更に対して隔離された関係にあることを意味します。1つのAPIトークンがリークしたりローリングが必要になった場合にも、他のサービスのAPIトークンには影響しません。また、前述の機能は、各サービスに必要なアクションとリソースを正確にスコープ設定できることを意味します。これによりお客様は、APIによってCloudflareにアクセスする際に最小権限をより正しく実践することができます。

次に、APIトークンの作成および使用方法について説明します。

APIトークンの使用

最初のAPIトークンを作成するには、次のユーザープロファイルの、「API Tokens」セクションに移動します。dash.cloudflare.com/profile/api-tokens

1.このページには、グローバルAPIキーとオリジンのCAのキーに加え、すべてのAPIトークンのリストも表示されます。

APIトークンの使い方 - トークンの作成

最初のAPIトークンを作成するには、「Create Token(トークンの作成)」を選択します。


2.作成画面には、トークンを作成する方法が2つあります。「Custom(カスタム)」オプションを使用して最初から作成することも、「Start with a template(テンプレートから開始)」を選択して定義済みのテンプレートから開始することもできます。

APIトークンテンプレートの選択

この場合、「Edit zone DNS(ゾーンDNSの編集)」テンプレートを使用して、単一ゾーンのDNSレコードを編集できるAPIトークンを作成します。


3.テンプレートを選択したら、スコープを設定するAPIトークンのゾーンを選択する必要があります。DNS編集権限が既に事前に選択されていることにご留意ください。

トークンがDNSを制御できるゾーンの指定

この場合、APIトークンがDNSレコードを編集できるCloudflareゾーンとして「garrettgalow.com」が選択されています。


4.サマリーに進むを選択すると、選択内容を確認する機会が与えられます。この場合、リソースとアクセス許可はきわめて単純ですが、ここで作成前にAPIトークンに正しい数の権限を与えていることを確認することができます。

トークンの概要 - 確認

5.作成されると、APIトークンが表示されます。この画面にしか表示されませんので、必ず安全な場所にこのシークレット情報を保管するようにしてください。このシークレットを持っている人は、リソースに許可されている操作を実行できるため、パスワード同様に保護してください。次のスクリーンショットでは、当然ながらシークレットは黒塗りにしています。このシークレットをうっかり紛失した場合でも、APIトークンテーブルから再生成することができますので、再度すべての許可を設定する必要はありません。

トークンシークレットを使用したトークン作成の完了画面

シークレットに加えて、この画面には、トークンが正常に作成されたことを確認するために使用できる、curl要求の例が表示されます。また、直接HTTP要求に対してトークンを使用する方法の例も示されます。APIトークンは、RFC Authorization Bearer標準に基づいています。このAPIを呼び出すと、トークンが有効でアクティブであることを示す正常な応答が表示されます。

~$ curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
>      -H "Authorization: Bearer vh9awGupxxxxxxxxxxxxxxxxxxx" \
>      -H "Content-Type:application/json" | jq

{
  "result": {
    "id": "ad599f2b67cdccf24a160f5dcd7bc57b",
    "status": "active"
  },
  "success": true,
  "errors": [],
  "messages": [
    {
      "code": 10000,
      "message": "This API Token is valid and active",
      "type": null
    }
  ]
}

今後の予定

Cloudflare APIを使用しているユーザーには、前身のAPIキーからAPIトークン使用に移行されることをおすすめします。今回の発表をもって、当社はTerraformプロバイダーCloudflare-Goライブラリ、およびWordPressプラグインをすべて、APIトークン互換にアップデートします。他のライブラリにも間もなく更新が届きます。お客様が安全に移行できるように、APIトークンとAPIキーの両方が当分サポートされます。APIトークンには、トークン使用手順や使用時の安全性をより強化するための機能の追加を予定していますので、今後の発表にご期待ください。

ご意見や、APIのセキュリティに今後期待されることなど、Cloudflareコミュニティまでお寄せください。

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

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

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
日本語Security (JP)Product News (JP)

Xでフォロー

Cloudflare|@cloudflare

関連ブログ投稿

2024年4月12日 13:00

Cloudflareのお客様がLet's Encryptの証明書チェーンの変更の影響を受けないようにする方法

Let's Encryptのクロス署名チェーンは9月に有効期限が切れます。この影響は、古いトラストストアを使用するレガシーデバイス(Androidバージョン7.1.1以前)に生じます。この変更による影響がお客様に及ぶことを防ぐため、CloudflareはLet's Encrypt証明書の更新時に別のCAを使用するように移行します...

2024年3月08日 14:05

Log Explorer:サードパーティのストレージを使用せずにセキュリティイベントを監視します

Security AnalyticsとLog Explorerを組み合わせることで、セキュリティチームはCloudflare内でネイティブにセキュリティ攻撃を分析、調査、監視でき、サードパーティのSIEMにログを転送する必要がなくなるため、解決までの時間を短縮し、お客様の総所有コストを削減できます...

2024年3月05日 14:02

セキュリティセンター内の保護されていないアセットを保護:最高情報セキュリティ責任者(CISO)のためのクイックビュー

本日、共通の課題であるインフラストラクチャ全体への包括的な展開を確実に行うために、セキュリティーセンター内に新しい機能セットを導入することを嬉しく思います。セキュリティ体勢を最適化する場所と方法を正確に把握することができます...