GitHub Access Security Tiers

さまざまな権限付与方式

AIにGitHubを操作させる方法としては、HITL(Human In The Loop)、プロキシ利用、GitHub App、PAT格納などの方式があり、それぞれ利便性やリスクが異なる。単独で他のすべてに勝る方式はないため、用途に応じて選択するとよい。

モデル基本方式漏洩時の権限の寿命効率性流出リスク
HITL(Human In The Loop)AIがアクセスできない場所から人間がghなどで操作を実行(AIにPAT/tokenを渡さない)人手が常に必要ありえない
プロキシ利用PATを格納したプロキシに中継させる(AIにPAT/tokenを渡さない)使えるツールが限定され不便ありえない
GitHub AppGitHub Appが短命トークンを発行。それをAIが利用する短命高いありえるが悪用リスクは限定的
直接トークンPATをAIに直接付与長命高いありえる

※ 流出リスクについて: 上記はあくまでAIによるPAT流出リスクについての評価である。オペミス等別の要因によって流出するケースは議論の外である。

使い分け

利用方法

HITL

手動で利用するのと同じ。

AIはコマンドを指示したり、テキストを作ったりする程度である。

プロキシ利用

PAT/Tokenをプロキシに配置し、AIがアクセスできないようにする。AIはHTTP経由でGitHub APIを呼ぶだけである。

理屈は難しくなく、docker-composeでDevContainerを起動してサイドカーにNginxを使い

  gh-proxy:
    image: nginx:alpine
    volumes:
      - ./gh-proxy/default.conf.template:/etc/nginx/templates/default.conf.template:ro
    environment:
      GH_PAT: ${GITHUB_CLAUDECODE_KEY}

環境変数でPATをこのような設定を読み込ませるだけでも利用できる。なお、なるべくFine-grained personal access tokensを用い、強すぎる権限を付与しないこと。

server {
    listen 80;

    location / {
        proxy_pass https://api.github.com;
        proxy_set_header Host api.github.com;
        proxy_set_header Authorization "Bearer ${GH_PAT}";
        proxy_set_header User-Agent "gh-proxy";
        proxy_ssl_server_name on;
    }
}

GitHub App

トークン生成用環境(サイドカーコンテナやAWS Lambdaなどを利用)を用意し、そこでGitHub Appの秘密鍵を使って短命トークンを発行する。 PATは使わない。AIエージェントは生成された短命トークンを利用してアクセスする。

  1. GitHub Apps を登録
  2. 取得した秘密鍵を保存し、トークン生成用環境で利用できるようにする。この時、AIエージェントが稼働する環境に決して秘密鍵を露出させないこと。トークン生成用環境にもAIエージェントを導入してはならない
  3. トークン生成用環境でトークンを生成し、AIエージェントに渡す
  4. 利用の都度AIエージェントはトークンを発行させ、これを利用する。Claude CodeならSKILLに入れておくと自己判断で実施してくれる。

トークンを発行させて利用するコマンドの例はこちら。

export GH_TOKEN=$(curl -fsS http://gh-token-sidecar/token | jq -r '.token')

直接トークン付与

環境変数を経由してPATをDevContainerに渡す。もっとも手間がかからず高効率、ただしAIがいつでもPATを流出させることができる。

こう書くとNGにしか読めないかもしれないが、漏洩リスクを許容できる環境なら手間が少なく良い手法である。 ただし付与する権限だけは絞っておくほうがよい。フル権限でリポジトリ制限なしの権限を与えたキーは決して渡すべきでない。

備考

Show Text to Share
AIにGitHub権限を与える方式

GitHub Access Security Tiers

https://www.tricrow.com/policies/github-access-security-tiers.html
この記事を書いた人
T.Nakamura
T.Nakamura
SRE | セキュリティ前提の設計・運用・監査対応(PCI DSS) | ドキュメント整備と仕組み化で開発・運用を整えます | AWS SAP / 日商簿記一級フォローはこちら

カテゴリ

タグ