CI/CDと秘匿情報:管道が秘密デ,タを保持する方法

秘密を守れない友人は信用できません。ンテグレ,ション済みの各コンポーネントの認証情報を預けるという意味で、ミッションクリティカルなCI/CDツールにも同じことが言えます。
他の様々なサービスに接続する必要のあるCI / CDツールにとって,秘密を安全に保つのは難しいことです。それぞれが独自のパスワ,ドやト,クンを必要とし,盗まれないようにしなければなりません。ワークフローを定義するプレーンテキストファイルで機密データを公開することは大きなセキュリティリスクとなります。
JFrog pipelineは最初から秘密を守るように設計されています。多くのciソリュションとは異なり,特別なインストールやメンテナンスが必要なプラグインやアドオンを提供するのではなく,秘密データの管理がはじめから組み込まれています。
ここでは,秘密デ,タの中央管理とJFrog平台の詳細なアクセス権限を組み合わせて管道集成が提供する利便性,セキュリティ,および管理者コントロルにいてご紹介します。
管道集成
管道には使用頻度の高いルに対応した様々なンテグレ,ション機能が用意されているので,簡単に各サ,ビスへ接続できます。多くの場合、インテグレーションの追加に必要なのは分かりやすい名前を付け、APIエンドポイントを指定し、ユーザーの資格情報を入力するだけです。接続可能なインテグレーションにはGitHub、Bitbucket、Docker、Kubernetes、SlackそしてAWS、GCP、Azureなどのクラウドサービスがあります。

秘密デ,タのセントラル,ストレ,ジ
JFrog管道はインテグレーションに必要となる秘密データを暗号化し,セントラル・ストレージに保管して安全に守ります。

例えば,茉莉花の開発チムがコンテナメジのためにプラaapl . aapl . aapl . aapl . aapl . aapl . aaplを使用している場合,Docker注册表集成でユ,ザ,名とパスワ,ドを指定します。

茉莉花の管道DSLがこの码头工人注册表集成を使用する場合,プレーンテキストファイルの中にインテグレーションを表す分かりやすい名前(Jasmine_Docker)だけが表示されます。管道集成が接続処理を行い,秘密デ,タは表示されません。
- name: Jasmine_Docker #我们的私有docker注册表
これにより,開発者が知る必要があるのは,サービスにアクセスするのに必要なインテグレーションの分かりやすい名前だけとなります。開発者はサ,ビスへの接続を許可する秘密デ,タを直接使用する必要はありません。別の管理者がインテグレーションを設定する場合,チームの開発者は使用を許可されているインテグレーションの秘密を管理する必要がないので,秘密データを共有することなく安全にサービスを共有することができます。
管理者コントロ,ル
制御のためにンテグレションを追加,編集,削除できるのはJFrog平台の管理者ユ,ザ,だけです。また,ベストプラクティスに従い管道はパスワードやトークンなどの重要な秘密をUIには表示せず,ディスクマークだけを表示します。
大規模かつチームが複数ある組織では,すべてのユーザーがすべてのサービスにアクセスできるようにしたいわけではないでしょう。管理者がインテグレーションを追加または編集する時,特定のパイプラインソースのみがこのインテグレーションにアクセスできるように制限することができます。このようにしてサービスを一部のパイプラインのみに制限することが可能となり,パイプラインを使用する権限を持つユーザーやグループだけに制限することができます。
これによって開発者はインテグレーションの利用や共有は容易で,許可されたサービスのみ利用可能となります。

- 例えば,桑杰は茉莉のチ,ムではないため,茉莉のプラaapl . exeベ. exeトなDockerレジストリに▪▪メ▪▪ジをプッシュすることはできません。金管理者であるが茉莉花のチームにこのインテグレーションの使用を制限する方法は以下の通りです。
- Kimがパeconeconプラeconeconeconeconンのソ,スとしてJasmineのプロジェクトのリポジトリ(例:茉莉花/管道)を追加する
- Jasmine_Docker(Docker Registry Integration)でKimはパプランのソスとして茉莉花/管道のみを指定する

- 在管理|权限, Kim补充了管道来源
茉莉花/管道到Jasmine团队的权限目标。
開発者の利用可能性
管道はインテグレーションの秘密データを一元的に保持していますが,管道DSLでその詳細にアクセスすることができます。ステップの集成ブロックでインテグレーションを指定することにより,そのステップのシェルスクリプトで使用することができます。
例えば,パイプラインのビルド完了時に通知メールを送信する必要がある場合,組み込みのユーティリティ機能を使用して,管理者が追加したSMTPインテグレーションで“TeamJasmineという名前を付けます。
集成:- name: TeamJasmine # SMTP集成执行:onSuccess: - send_notification TeamJasmine——body "built docker image docker-local/demo:$pipeline_name.$run_number"
同様に,シェルスクリプトがインテグレーションによって保持されている値を必要とする場合は,環境変数を使用します。例えばSSH密钥集成の秘密鍵を使用してSecure Shell (SSH)コマンドを実行するには以下のようにします。
集成:- name: mySSHKeys # SSH密钥集成执行:onExecute: - echo "$int_mySSHKeys_privateKey" > key.txt - chmod 400 key.txt - SSH -i key.txt user@host '做一些工作'
いずれの例でも、管道DSLファイル内のキーやパスワードが公開されることはありませんので,オンラインのソースコードリポジトリに保存しても安全が保たれます。この重要な情報は管道環境の安全な場所から漏洩することはありません。
トップ中のトップシ,クレット
管道集成を利用する場合,安全にリソースを共有しながら,認証のための秘密データをより安全に保つことができます。JFrog平台の統一された権限モデルを使用して、必要な人にはアクセスを許可し、それ以外の人にはアクセスをブロックすることができます。
これはクラウドネイティブ,そしてエンタープライズ規模のCI / CDで使える管道の設計の1つに過ぎませんが,非常に重要です。ワンストップでDevOpsを実現するシステムを構築するための包括的なアプローチを反映したものとなっています。
皆さんもぜひお試しください。そして,管道がリリスをいかに安全か迅速なものにするかを体感してください。