APIキーとは?
Scrapeless Web Unlockerは、x-api-tokenヘッダーに送信されたScrapeless APIキーで文書化されたAPIリクエストを認証します。
TL;DR
- APIキーは、アプリケーションまたはアカウントに関連付けられた認証情報です。 プロバイダーが付与するアクセスとその送信方法を決定します。
- キーは、その名前が普通であっても秘密です。 ブラウザーバンドル、公開リポジトリ、URL、および共有ログから除外してください。
- 認証と承認は別のチェックです。 認識されたキーは、要求された操作のための権限、バランス、または有効な入力が欠けている場合があります。
- ローテーションには制御されたカットオーバーが必要です。 すべての依存サービスで秘密を置き換え、新しいキーを検証し、漏洩したまたは退役したキーを無効にします。
APIキーは、ソフトウェアがリクエストを行う際に自分自身を識別するためにサービスから発行される値です。それは通常、人間のユーザーセッションではなく、アカウント、プロジェクト、またはアプリケーションに属します。サーバーは提示された値を確認し、独自のアクセスおよび使用ルールを適用します。キーの形式、ヘッダー名、スコープ制御、および有効期限の動作はプロバイダー特有です。クライアントは、すべてのキーがベアラートークンのように機能するとは限らないことを前提にせず、現在のAPIドキュメントからこれらのルールを学ぶべきです。
Webデータアプリケーションの場合、区別は実用的です。リクエストが正しいエンドポイントに到達しても、キーが供給されていなかったり、キーが間違ったフィールドに送信されたり、アカウントがその製品へのアクセスを持っていないために失敗することがあります。逆に、成功裏に認証されたキーは、要求されたURLまたはペイロードが有効であることを証明するものではありません。このガイドでは、キーを制御されたリクエストの一部として扱い、そのライフサイクルを作成から取り消しまで追跡します。
キーが識別するものと識別しないもの
プロバイダーは、呼び出し元を識別し、使用量を計測し、クォータを施行し、リクエストをアカウントまたはプロジェクトに関連付けるためにキーを発行できます。一部のシステムでは、環境、操作、またはネットワークの起源によってキーを制限することも許可しています。これらの制限のいずれも、プロバイダーが実際に提供していない限り仮定すべきではありません。キーは認証情報であり、プロバイダーの承認ポリシーがリクエストの瞬間にその認証情報が何をできるかを決定します。
キーはユーザーのパスワードとは異なります。それは、インタラクティブなログインなしで機械アクセスを許可することが多く、複数のサービスがそれに依存する場合があります。また、OAuthアクセストークンでもありません。 OAuthベアラー・トークン仕様 は、1つのプレゼンテーションスキームを説明します。多くのAPIキーシステムはカスタムヘッダーを使用します。すべての秘密をBearer値として扱うと、認証が壊れたり、プロバイダーが意図しなかった場所に置かれる可能性があります。
Scrapeless APIキーガイダンス は、Web Unlocker RESTリクエストがBearerプレフィックスなしでx-api-tokenに生のキーを送信することを示しています。同じガイダンスは、他のScrapelessインターフェースが異なる接続方法を使用できることを説明しています。認証情報をRESTクライアント、ブラウザー接続、プロキシ構成、SDKの間で移動する前に、選択した製品ガイドを読むべきです。
HTTPリクエストにおけるAPIキーの位置
サービス契約は、認証情報がヘッダー、他の輸送フィールド、または特定の接続パラメータのいずれに入るかを決定します。HTTPヘッダーは、リソースURLから認証情報を分離するため、サーバー間APIで一般的です。 HTTPフィールドモデル は、リクエストメタデータがメッセージと共にどのように移動するかを説明します。ヘッダーはクライアント、制御下のプロキシ、およびサーバーログに見える場合があります。そのシステムがそれらを記録する場合、ヘッダーはTLSまたはログの赤actionの代替ではありません。
プロバイダーが明示的に要求しない限り、URLに長寿命のキーを置くことは避けてください。URLはブラウザ履歴、分析、リファラーフロー、リバースプロキシログ、貼り付けたスクリーンショットに表示されることがあります。適切なヘッダーであっても、冗長なHTTPトレースが完全なリクエストを印刷する場合に漏洩する可能性があります。診断を共有する前に、x-api-tokenとトークンを埋め込んだ接続URLを赤actionしてください。フル認証情報ではなく、サポートのためのリクエストIDまたは安全なプレフィックスを保存してください。
アプリケーションは、リクエストを送信する前に偶発的な空のキーを拒否するべきです。サーバープロセスでは、デプロイメント環境または秘密管理者から秘密を読み込み、それが存在しない場合は起動に失敗します。ローカル開発シェルでは、1つのセッションのために値を読み込むことができますが、それでもシェル履歴やコミットされた設定ファイルにキーを安全に保つことにはなりません。例はプレースホルダーとして保持し、実際の値はプライベート環境でのみテストしてください。
開発とデプロイメント間のセキュアストレージ
開発中は、バージョン管理から除外された環境変数またはローカル秘密ファイルを使用します。.envファイルは単なるストレージです。そのプロセスは、ローダーやアプリケーションコードがそれを読み込まない限り、それを読み込みません。共有例ファイルは、空の値または明らかなプレースホルダーを含むべきです。 OWASPのハードコーディングされた認証情報ガイダンス は、配布後にソースコードに埋め込まれた秘密が制御するのが難しい理由を説明しています。
本番環境では、プラットフォームの秘密ストアにキーを配置し、それを必要とするサービスにのみ読み取りアクセスを付与します。イメージやフロントエンドバンドルに焼き込むのではなく、ランタイムで挿入します。秘密を変更できる人と、それを消費するデプロイメントを監査します。ブラウザ側のJavaScriptアプリケーションは、ブラウザを実行している人から長寿命のキーを秘密に保つことはできません。アカウントレベルのアクセスを許可するキーを使用する場合は、信頼できるバックエンドを使用してください。
隣接するサーフェスも保護してください。CI出力、エラートラッキング、リクエストトレース、ノートブックセル、サポートチケット、およびスクリーン録画は、リポジトリが存在しないときでも認証情報を持つ可能性があります。既知のヘッダー名やキーのパターンに対して自動赤actionを設定しますが、フィルターが機能していることを確認するために代表的なログを調査します。以前に秘密をキャプチャしたログの保持を制限し、無効化後に露出したコピーを削除します。
誤解せずにキーを使用する方法
リクエストにはいくつかの検証ステージがあります。サーバーはトランスポートと構文をチェックし、資格情報を識別し、アクセスを評価し、製品固有の入力をチェックし、最終的に結果またはエラーを返します。認証の失敗は、キーが欠落している、形式が不正である、期限切れである、または誤った方法で送信されたことを示唆しています。認可またはバランスの失敗は、キーが認識されている場合でも発生する可能性があります。無効なペイロードは別の問題です。ドキュメント化されたエラーによって影響を受けたレイヤーのみを変更してください。
Scrapelessは、スクレイピングジョブを開始せずにキー認証を確認する方法としてGet User Infoリクエストを文書化しています。そこでの成功した認証は、その操作に対してキーが機能したことを証明しますが、すべての製品へのアクセスを確立するわけではありません。小さく、文書化された Web Unlockerリクエスト はその後、製品固有のパスをテストできます。レスポンスボディやHTTPステータスをチェックし、検証呼び出しで返されたアカウント情報を決して公開しないでください。
その Web Unlocker製品ページ は、URLベースの公開ウェブ取得を説明しています。取得したレスポンスに期待されるコンテンツが欠けている場合、同じ呼び出しでキーが使用されたからといって、キーを原因と見なすのは避けてください。ターゲットURL、リダイレクト、レンダリングニーズ、出力タイプ、ソースページのIDを確認してください。資格情報の検証とコンテンツの検証は異なる質問に答えます。
ローテーション、露出、取り消し
計画されたローテーションは段階的な展開の変更です。古いキーを使用しているサービスを棚卸しし、プロバイダーが提供するコントロールを使用して代替品を用意し、各シークレットストアを更新し、シークレットを起動時のみ読むプロセスを再起動し、代表的な操作を検証します。新しいキーが証明されたら、古いキーを無効にします。カットオーバーの所有者と時間を記録して、後の失敗が変更に起因するのか推測されるのかを追跡できるようにします。
露出したキーはまず封じ込めが必要です。プロバイダーのコントロールまたはサポートチャネルを通じて無効にし、このジョブを中断する場合でも、代替品を発行し、最近の使用を確認してください。リポジトリのコミットを削除したり、スクリーンショットを修正したりしても、コピーされたキーは無効になりません。露出の発生場所を理解するための十分なインシデント証拠を保存しますが、調査中に新しいチケットにシークレットをコピーすることは避けてください。
スコープと有効期限は、プロバイダーがそれらを提供する場合、影響範囲を減らしますが、安全なストレージの必要性を取り除くわけではありません。狭いスコープを持つキーでも、そのスコープ内でデータを明らかにしたり料金が発生したりする可能性があります。アカウントモデルがサポートしている場合、開発と本番の資格情報を分けてください。1つのキーがいくつかの無関係なジョブに使用される場合、すべての消費者が一緒に移動しなければならないため、ローテーションは困難になります。緊急事態の前にその依存関係を計画してください。
APIキーと委任アクセスの選択
APIキーは、自分のアカウントを使用するバックエンドサービスに適しています。特に、プロバイダーが明確な制限と取り消しを提供する場合には。無関係なサードパーティアプリケーションにユーザーのアカウントに広範なアクセスを許可するための良い方法ではありません。委任された認可プロトコルは、ユーザーに代わって限定されたアクセスを付与し、別々のトークンライフサイクルを提供できます。正しい選択は、どの資格情報が例で短く見えるかではなく、信頼関係に依存します。
クライアント統合の場合は、アカウントの所有者が誰で、シークレットがどこに保存されているか、それができること、使用がどのように監視されるか、どのように取り消されるかを書き留めてください。モバイルまたはブラウザアプリケーションがプロバイダーを呼び出す必要がある場合、エンドユーザーを認証し、信頼できる環境からプロバイダーリクエストを行うバックエンドプロキシを考慮してください。そのバックエンドには独自の認可チェックが必要であり、オープンリレーになることはできません。
関連する Python API呼び出しガイド は、周囲のHTTPメカニズムを示しています。そのトランスポートアイデアはプロバイダー固有の認証の詳細とは別に保ってください。Scrapelessの場合、現在のキー処理の文書が正確なヘッダーと検証の表面に関する権威となります。
結論
APIキーは、プロバイダーのアクセスポリシーの下で呼び出し元を識別します。その安全な使用は、正確なリクエストメソッド、制御されたストレージ、編集された診断、テストされた代替プロセスに依存します。ドキュメント化された操作でキーを検証し、次に製品アクセスとレスポンスコンテンツを別々に検証してください。
最初の認証リクエストを行う
サーバー環境でScrapeless APIキーを保護し、現在のWeb Unlockerクイックスタートに従ってください。
今すぐサインアップし、 $5の無料クレジットを受け取る — クレジットカードは不要です.
$5のクレジットを請求する →FAQ
APIキーはパスワードと同じですか?
どちらも秘密ですが、APIキーは通常、サービスアカウントまたはプロジェクトへのマシンアクセスを表し、パスワードは一般的に対話的ログインで使用されます。実際のスコープはプロバイダーが決定します。両方を保護し、キーがAPIキーと呼ばれていることだけで安全に共有できるとは考えないでください。
ScrapelessキーをAuthorization: Bearerに置くべきですか?
いいえ、文書化されたWeb Unlocker RESTリクエストには。Scrapelessは、そのインターフェースのためにx-api-tokenヘッダーに生のキーを指定します。他の製品は異なる接続方法を使用することがあるため、認証リクエストを構築する前に現在の製品ガイドを確認してください。
フロントエンドアプリケーションはAPIキーを隠せますか?
ブラウザアプリケーションは、ユーザーに出荷された資格情報を確実に隠すことはできません。ソースファイル、ネットワークリクエスト、およびランタイムメモリは、ブラウザ所有者に観察可能です。キーが特権アカウントアクセスを付与する場合は、信頼できるバックエンドからプロバイダーを呼び出し、独自のユーザー認可を強制してください。
公開リポジトリにキーが表示された場合はどうしますか?
キーが露出したものとして扱います。プロバイダーのコントロールを使用して無効にし、依存するサービスに置き換え、最近の使用を調査してください。最新のファイルバージョンからテキストを削除するだけでは不十分です。値がリポジトリの履歴にコピーまたは保持されている可能性があります。
有効なキーは成功したAPI呼び出しを保証しますか?
いいえ。認証はただのチェックです。アカウントは製品アクセスや残高が不足している可能性があり、リクエストボディが無効であるか、要求された公開ページに期待されるデータが含まれていない可能性があります。文書化されたエラーを解釈し、返された内容を別々に検証してください。