ツールチェーンでシークレット・インテグレーションを使用する

ツールチェーンのセットアップおよびパイプライン・ユーザー・インターフェースで提供されるシークレット管理機能は、 IBM Cloud® Secrets Manager、 IBM® Key Protect、または HashiCorp Vault用のシークレット・インテグレーションを使用することで、保管されているシークレットの選択を可能にします。 Secrets Picker ダイアログを使用することで、ツールチェーンやパイプライン エディタは、CRN (クラウド リソース名) によって、または 名前 によって構成されたバインドされたシークレット統合から名前付きのシークレットを選択できます。 秘密が選択されると、CRN または正規の秘密参照が、対応するツールチェーンまたはパイプラインのセキュア プロパティに注入されます。Secrets Manager 統合で、CRN によって構成されている場合は crn:v1:...secret:<secret-guid> となります、または、サポートされているプロバイダのいずれかを使用し、名前で構成されているVault統合の場合は、{vault::integration-name.secret-name} となります。

canonical by name リファレンス・フォーマットでは現在、シークレット名にピリオド文字を含むシークレットは解決されません。

CRNによるまたは名前によるのどちらのタイプの秘密参照が使用されているかに関わらず、フロントエンドのユーザーインターフェイスコンポーネントとSecrets Pickerダイアログは秘密参照のみを使用します。 by CRN または by name シークレットリファレンスの解決された値は、フロントエンドに公開されることはなく、許可された authorization が利用可能であること (IAM Authorizations and Access ポリシーを使用して構成される) に基づいて、ツールチェーンおよびパイプライン内で実行時に常に動的に解決されます。

IBM Cloud® 内で、ツールチェーンとパイプラインの CRNによる名前で シークレット参照を解決する動的なプロセスは、すべての地域のすべての IBM Cloud® Secrets Manager と IBM® Key Protect プロバイダ インスタンスへの内部仮想プライベート エンドポイント (VPE) を使用して実行されます。 これにより、ツールチェーン、パイプライン、および IBM Cloud® Secrets Manager と IBM® Key Protect プロバイダー・インスタンス間のすべてのリクエストとレスポンスのデータは、境界内のプライベート IBM Cloud ネットワーク内に保持され、パブリック・ネットワーク・チャネルを経由しないことが保証されます。

ツールチェイン内のバインドされたシークレット・インテグレーションから1つ1つシークレットを手動で選択することに加えて、Secret Hint を使用するオプションも利用できます。 このオプションを使うと、ツールチェーンテンプレートに、短い形式の秘密参照である推奨秘密名(Hints としても知られています)をあらかじめ定義しておくことができます。 秘密のヒントの書式は {vault::secret-name} で、秘密の統合名は含まれません。 これはツールチェーンの作者に柔軟性を提供します。つまり、必要なシークレット名はすべて toolchain.yml に事前に入力することができ、次にこれらの名前はツールチェーン用に設定されたシークレット統合に対して自動的に解決されます。

前述したように、Secrets Managerを設定して、CRN ごとに秘密を参照することができます。 詳しくは、 クラウド・リソース名(CRN )を参照。 このフォーマットでは、正しい 権限がある場合、別のアカウントのSecrets Managerインスタンスから秘密を参照できるため、柔軟性が高くなります。 詳細については、Secrets Manager を参照してください。

Hint は、ツールチェーンにバインドされている利用可能な by name secrets統合のいずれにおいても、同じ名前を持つ最初にマッチするシークレットに対して自動的に解決される、推奨されるデフォルト名である。

DevSecOps パイプラインのシークレット

CIとCDの両方で使われる秘密の概要は以下の通りだ:

DevSecOpsの秘密
シークレット ヒント 情報
IBM Cloud の API キー ibmcloud-api-key 必須:CI & CD IBM パブリッククラウドとの認証と幅広い操作の実行に使用する。
GPG秘密鍵 signing_key 必要です:CIのみ CIパイプラインによってビルドされたイメージに署名するために使用される証明書です。
IBM プライベート・ワーカー・サービス API キー private-worker-service-api-key 必要です:CI のみ A Service ID API Key Tekton Private Worker Service 上でデリバリーパイプラインのワークロードを実行するために使用される。
GitHub アクセス・トークン git-token オプション:CI & CD GitHub で認証し、リポジトリへのアクセスを提供するために使用する。
Artifactory APIトークン artifactory-token 必須:CI & CD パイプラインタスクで使用される画像にアクセスするために使用されます
Slackウェブフック slack-webhook オプションです:CI & CD このウェブフックは、ツールチェーンのステータス通知を投稿するためにSlackツール統合を使用する場合に必要です。
ServiceNow APIトークン servicenow-api-token 必須:CDのみ 変更管理操作のためにService Nowにアクセスするために使用します
HashiCorp Vault 役割 ID role-id 必須:CI & CD HashiCorp Vault サーバとの認証に使用。
HashiCorp Vault シークレット ID secret-id 必須:CI & CD HashiCorp Vault サーバとの認証に使用。
IBM Cloud Object Storage ライター API キー cos-api-key 必須:CI & CD Object Storageサービスでの認証に使用 - このキーには writer パーミッションが必要
SonarQube パスワードまたは認証トークン sonarqube-password オプション:CI SonarQube ソースコードアナライザでの認証に使用する。

HashiCorp Vaultサーバーを使用している場合、HashiCorp Vaultツール統合が AppRole Auth Methodメソッドを使用していることを確認してください。 AppRole 認証方法を使用する場合、 HashiCorp Vault サーバーとツールチェインを正常に統合するには、 role-idsecret-id が必要です。 role-idsecret-id はそれ自体が秘密であるため、 IBM Key Protect ツール統合を 使用して保存し、ツールチェーンのワークフローで安全に検索および適用できるようにすることが推奨される。 その他のツールチェーンのシークレットはすべて、 HashiCorp Vaultツール統合を使用して保存および取得する必要があります。

パイプライン環境プロパティ git-token が設定されていない場合、デフォルトで Git Repos and Issue Tracking アクセストークンを取得するために ibmcloud-api-key が使用されます。 ただし、ibmcloud-api-keygit へのアクセス権限がない場合は、git-token を設定する必要があります。

シークレット・ストアの構成

IBM Cloud では、機密データの保護と秘密の一元化を支援するさまざまな秘密管理およびデータ保護サービスを選択できます。 IBM Cloudの秘密の管理 で説明されているように、要件に応じて保管庫の統合を選択することができます。 この文書では、前提条件や、ヒントとして知られている秘密の名前のリストの使用方法についての情報を提供します。 テンプレートでヒントを使用すると、事前構成されたシークレットをツールチェーンに自動的に取り込めるので、ツールチェーンに接続したさまざまなボールト統合から手動でシークレットを選択する必要がありません。

使用方法 IBM Cloud® Secrets Manager を使用して、ツールチェーンの一部である API キー、Image Signature、または HashiCorp Vault 認証情報のような秘密を安全に保存および適用します。

Secrets Managerツール統合フォーム
IBM Secrets Managerツール統合

テンプレートには、次の例のようなHashiCorpボールト・ツールの統合も付属しています:

HashiCorpVault ツール統合フォーム(必須フィールドと値の例)
HashiCorpVault ツール統合

HashiCorp Vaultを使用するには、以下の情報を提供する必要があります:

名前
このツール統合の名前。 この名前はツールチェーンに表示されます。
サーバー URL
HashiCorp Vaultインスタンスのサーバ URL。 例えば、https://<vault-service>.<org>.com:8200 です。
統合 URL
HashiCorp Vault Integration タイルをクリックしたときに移動する URL です。
秘密の道
HashiCorp Vaultインスタンスに秘密が保存されているマウントパス。
認証方式
HashiCorp Vault インスタンスの認証方法。 AppRole を使用します。
ロール ID
他のクレデンシャルが評価される AppRole を選択する識別子。
シークレットID
(secret_idを持つ)すべてのログインにデフォルトで必要とされ、常に秘密であることを意図するクレデンシャル。

テンプレートには、IBM® Key Protect for IBM Cloud®ツールの統合も付属しています:

Key Protectツール統合フォーム(必須フィールドと値の例)
IBM Key Protectツール統合

あらかじめKey Protectに role idsecret id を格納しておけば、図2のようにツールカードでそれらのシークレットを含むKey Protectインスタンスを選択することができます。 それが終わったら、HashiCorp VaultツールカードのロールIDシークレットID フィールドのキーアイコンをクリックし、ピッカーを使ってこれらのフィールドにシークレットを適用することができます。

同様に、ツールチェインで使用されるその他のシークレットにも、テキストフィールドに付随するキーアイコンがある。 同じピッカーコントロールを使用して、残りのすべてのインスタンスに HashiCorp Vault の秘密を適用できます。