ドッカーによるシークレットの保護

最新のソフトウェアは相互接続されています。 アプリケーションを開発するときは、インフラストラクチャ、クラウド インフラストラクチャ サービス、またはサードパーティ アプリケーション上の他のサービスと通信する必要があります。 もちろん、誰かになりすますことは望ましくないため、SSHキーやAPIトークンなどのシークレットを使用して通信を安全にします。 しかし、これらの秘密を持っているということは、あなたがそれらを秘密にしなければならないことを意味します。

残念ながら、時々秘密が逃げます。 これが発生すると、悪意のある人物が悪意を持ってシークレットを使用したり、他の人が使用できるように「ダークウェブ」に投稿したりする可能性があります。 コードに脆弱性を挿入できます。 彼らはあなたになりすましたり、正当なユーザーのリソースへのアクセスを拒否したりできます。 また、秘密が請求可能なもの(パブリッククラウドインフラストラクチャなど)である場合、多額の費用がかかる可能性があります。 他にどのようなコストがかかっても、広報活動への影響により、ユーザーはあなたへの信頼を失う可能性があります。

この記事では、Dockerがシークレットの漏洩を防ぐのに役立ついくつかの方法について説明します。

読み進める前に: シークレットが公開された場合、最初のステップは、シークレットをすぐに無効にし、侵害を確認することです。

ドッカーでシークレットを保護するバナー

Docker Hub を使用したアクセスの制御

最小特権の原則は、セキュリティ体制の強力な部分です。 誰かが Docker Hub イメージにアクセスする必要がない場合は、アクセスできないはずです。 Docker Hub には プライベート リポジトリ が用意されているため、イメージを自分だけに保持できます。 Docker Personal サブスクリプションは 1 つのプライベート リポジトリを作成できますが、Docker Pro、Docker Team、および Docker Business サブスクリプションは無制限のプライベート リポジトリを提供します。

プライベートリポジトリであっても、Docker Hubはアカウントシークレットを保存するためのものではないことに注意してください。 プライベートリポジトリは、多層防御モデルのレイヤーです。

もちろん、画像を選択的に共有したい場合もあります。 Docker Pro、Docker Team、および Docker Business サブスクライバーは、 コラボレーター (プライベート リポジトリ内のイメージをプッシュまたはプルできるアカウント) を追加できます。 Docker Pro サブスクライバーは、1 つのコラボレーターを 1 つのリポジトリに追加できます。 Docker Teams と Docker Business サブスクライバーは、組織の規模に追加できます。 これは、画像を必要とする人々と画像を共有できることを意味します。

秘密を隠しておく

Dockerイメージのシークレットを保護するよりも優れていることは何ですか? そもそも画像にそれらがありません! 適切な接続を確立するためにシークレットを保存する必要がある場合がありますが、シークレット漏洩の多くのケースには、誤って追加されたシークレットが含まれます。

誤ってシークレットを追加しないようにする最善の方法は、 AWS Secrets ManagerHashiCorp Vault1Password など、いくつかの CLI オプションがあるシークレットマネージャーを使用することです。 シークレットをローカル環境に保持する必要がある場合は、ファイルを .dockerignore ファイルに追加することで、ファイルが誤ってイメージに巻き込まれるのを防ぐことができます。 たとえば、誤って SSH キーをイメージに追加することが心配な場合は、次のものを含めることができます。 *id_rsa*

この方法は、予測可能な名前を持つファイル内のシークレットに適しています。 クラウドの認証情報を常に , という cloud_key.txtファイルに保存している場合 その後、あなたは十分にカバーされています。 しかし、あなたは捕まえ cloud_credentials.txtません.

シークレットスキャナーを使用して、セキュリティの別のレイヤーを追加できます。 Aqua Security TrivyAnchoreJFrog Xray などのツールは、秘密のように見えるものがないかファイルを検索します。画像をプッシュする前にスキャナーを実行すると、エスケープする前にシークレットをキャッチできます。 多くのシークレットスキャナーをGitコミットフックに結び付けて、シークレットがコードに含まれないようにすることもできます。

結論

あなたの秘密を秘密にしておくことは継続的なプロセスですが、努力する価値があります。 サイバーセキュリティのすべてのものと同様に、魔法のソリューションはありませんが、Dockerには、シークレットの漏洩を防ぐために使用できる機能が用意されています。

プライベートリポジトリとコラボレーターを最大限に活用するには、 サブスクリプションサービスを確認してください。 Docker Scout にシークレット スキャンを追加することを検討しています。この機能を確認したい場合は、 公開ロードマップで問題に賛成票を投じてください。

さらに詳しく