Dockerレジストリ認証情報を安全に共有する

使用後に期限切れとなる暗号化リンクで、Dockerレジストリの認証トークンと認証情報を共有しよう。

問題

Dockerレジストリの認証情報は、独自のアプリケーションコードや内部ツールを含むコンテナイメージのプルとプッシュへのアクセスを付与する。Slackやメールでレジストリトークンをシェアするとコンテナのサプライチェーン全体が露出する。レジストリアクセスが侵害されると、改ざんされたイメージ、マルウェアの注入、サプライチェーン攻撃につながる可能性がある。

Vaulted のサポート内容

VaultedはブラウザでDockerレジストリ認証情報をAES-256-GCMで暗号化し、自己消滅リンクを生成する。復号鍵はURLフラグメントにのみ存在し、サーバーには到達しない。受信者が認証情報を取得すると、リンクは恒久的に期限切れとなる。

手順

  1. DockerレジストリトークンまたはログインIDをVaultedに貼り付ける
  2. チームの規模に合わせた閲覧回数制限と有効期限を設定する
  3. コンテナアクセスを設定するエンジニアに暗号化リンクを共有する
  4. 相手がDockerクライアントを設定し、リンクは自己消滅する

ターミナルからDockerの認証情報を共有する

Vaulted CLIを使えばスクリプト内でレジストリ認証情報を共有できる: npx vaulted-cli "registry.example.com:username:token" --views 1 --expires 1h。WebアプリとまったくのAES-256-GCM暗号化。npmでインストール: npm install -g vaulted-cli。

GitHub ActionsでDocker認証情報を共有する

Vaulted GitHub ActionでCI/CDの認証情報共有を自動化できる: uses: vaulted-fyi/share-secret@v1 でDockerレジストリ認証情報をシークレットinputとして設定する。エンドツーエンド暗号化、自己消滅リンク。GitHub Marketplaceで公開中。