これは、アクセスが制限されたGitHub API トークンの作成と使用を可能にするステートレスGitHub API プロキシです。
基本的に、これは GitHub API トークンの ID とアクセスの管理です。
GitHub の API トークンでは、トークンが実行できるアクションを細かく制御することはできません (GitHub の皆様への問題を参照してください)。たとえば、トークンが問題にラベルを適用することだけを許可するには、基本的にリポジトリを完全に制御するトークンを作成する必要があります。
これは規模が大きいと問題になります。 GitHub API と対話するジョブ、プロセス、ボットが多数ある場合、トークンが侵害される可能性が高まり、広範な権限を持つトークンは非常に大きな影響を及ぼします。
このプロキシを使用すると、きめ細かい権限を持つ API トークン (マジック トークン) を作成し、プロキシ経由でそれらのマジック トークンを使用して GitHub API と通信できます。プロキシは、マジック トークンが要求されたアクションの実行を許可していることを検証し、実際の GitHub API トークンを使用して要求を GitHub API に転送します。
このプロキシはバックアップ ストレージを必要とせず、すべての状態をマジック トークン自体に保存します。
プロキシは、非対称暗号化 (公開キーと秘密キーのペア) と JWT を使用して、その状態をマジック トークンにエンコードします。
各マジック トークンは、次のクレームを含むプロキシの秘密キーによって署名された単純な JWT です。
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
github_token
クレームは、生の GitHub API トークンの暗号化されたバージョンです。これはプロキシの公開キーを使用して暗号化されるため、(秘密キーを使用して) プロキシ自体のみがそれを復号化できます。
スコープ クレームは、マジック トークンが何にアクセスできるかを決定します。このプロキシには、以下で説明する基本的で初歩的なスコープ実装が含まれていますが、必要なスコープ戦略を実装できます。
JWT は、プロキシ自体によってその秘密キーを使用して生成され、署名されます。これは、JWT を無効にしない限り、コンテンツを改ざんできないことを意味します。
デフォルトでは、このプロキシには次の形式を使用する単純なスコープ戦略があります。
METHOD /url/pattern
METHOD
にはGET
、 POST
、 PUT
などを指定でき、 /url/pattern
は URL のチェックに使用される任意の正規表現を指定できます。
たとえば、 someorg
内の任意のリポジトリの問題にアクセスできるトークンを作成するには、次のようにします。
GET /repos/someorg/.+?/issues
TODO
これは、実験的であるかどうかにかかわらず、Google の公式製品ではありません。これはセキュリティに対する特効薬ではありません。このプロジェクトを使用するときは、すべてのリスクを負うものとします。