GitHubトークンを安全に共有する

閲覧後に自己消滅する暗号化リンクで、GitHubの個人アクセストークンとデプロイキーを送ろう。

問題

GitHubの個人アクセストークンとデプロイキーは、リポジトリ、CI/CDパイプライン、組織リソースへの直接アクセスを付与する。SlackやメールでシェアすることでBOTスキャナーや悪意のある攻撃者が収集できる検索可能なメッセージ履歴に残ることになる。GitHubは積極的に漏洩したトークンをスキャンしているが、チャット履歴に既に保存されている認証情報を保護することはできない。

Vaulted のサポート内容

VaultedはGitHubトークンがブラウザから送信される前に、クライアントサイドでAES-256-GCMを使って暗号化する。自己消滅リンクにより、受信者が取得するまでの間だけトークンが利用可能となる。ゼロ知識アーキテクチャにより、Vaultedサーバーはトークンを平文で見ることができない。

手順

  1. GitHub個人アクセストークンまたはデプロイキーをVaultedに貼り付ける
  2. 1回閲覧制限と短い有効期限を設定する
  3. リポジトリアクセスが必要な開発者に暗号化リンクを共有する
  4. 相手がトークンをコピーして環境を設定し、リンクは自己消滅する

コマンドラインからGitHubトークンを共有する

ブラウザを開かずにVaulted CLIでGitHubトークンを共有できる: npx vaulted-cli "ghp_xxxxxxxxxxxx" --views 1 --expires 1h。さらにセキュリティを高めるにはパスフレーズを追加できる: npx vaulted-cli "ghp_xxxxxxxxxxxx" -v 1 -p mypassphrase。グローバルインストールは npm install -g vaulted-cli。

GitHub ActionsでGitHubトークンを共有する

Vaulted GitHub ActionでCI/CDワークフロー内のトークンを共有できる: uses: vaulted-fyi/share-secret@v1 でGitHubトークンをシークレットinputとして設定する。このActionはクライアントサイドで暗号化し、自己消滅リンクを出力する。GitHub Marketplaceで公開中。