IBM Cloud Docs
Secrets Manager の構成

Secrets Manager の構成

IBM Cloud® Secrets Manager は、複数の IBM Cloud サービス間で、アプリのシークレットをセキュアに保管して適用するために役立ちます。

シークレットは、API キーなど、機密情報へのアクセスを提供するすべてのものを指します。 Secrets Manager ツール統合を使用して、ツールチェーン・ワークフローで必要な場所であればどこでもシークレットにアクセスできます。

Secrets Manager ツール統合を構成する前に、 Secrets Manager サービスのインスタンスをプロビジョンする 必要があります。

名前または クラウド・リソース名(CRN) によってシークレットを識別するように Secrets Manager ツール統合を構成できます。

名前によるシークレットの識別

名前でシークレットを識別するように Secrets Manager ツール統合を構成すると、ツールチェーンは以下のシークレット・タイプにアクセスできます。

  • Identity and Access Management (IAM) 資格情報のシークレット。
  • Secrets Managerに保管されている任意のシークレット。
  • キー値シークレット。

References to secrets 名前で are currently not able to resolve a secret that includes the period character in the secret name because this character is used to delimit each section of the canonical path.

Secrets Managerでの IAM 資格情報のシークレット、任意のシークレット、およびキー値のシークレットについて詳しくは、 さまざまなタイプのシークレットの処理 を参照してください。

ツールチェーンの一部であるシークレットをセキュアに管理するように、Secrets Manager を構成します。

  1. ツールチェーン作成時にこのツール統合を構成する場合は、「構成可能な統合」セクションで **「Secrets Manager」をクリックします。 オプションのツール統合として定義されている場合、Secrets Manager は「その他のツール (More Tools)」**にあります。 このインスタンスをサービス・インスタンス名で識別することを選択します。 ツールチェーンと Secrets Manager サービス・インスタンスの間に許可を作成するには、 「許可タイプ」 ドロップダウンから 「このツールチェーンの許可を作成します」 オプションを選択します。 これにより、 Secrets Manager サービス・インスタンスに保管されている秘密情報へのアクセス権限がツールチェーンに付与されます。

  2. ツールチェーンがあり、そこにこのツール統合を追加する場合、IBM Cloudコンソールから、メニューアイコンハンバーガーアイコン>Platform Automation>Toolchains をクリックします。 「ツールチェーン」ページで、ツールチェーンをクリックしてその「概要」ページを開きます。 あるいは、アプリの「概要」ページのContinuous Deliveryカードで、**「ツールチェーンの表示」をクリックします。 次に、「概要」**をクリックします。

    a. **「ツールの追加」**をクリックします。

    b. 「ツール統合」セクションで、**「Secrets Manager」**をクリックします。

  3. ツールチェーンで使用する Secrets Manager ツール統合のインスタンスの名前を指定します。 指定した名前は、**「Secrets Manager」**シークレットを選択する UI ツールで使用されます。 これは、ツールチェーンが実行された場合にシークレット値を解決する参照の一部としても使用されます。 このインスタンス名は、ツールチェーン・ワークスペース内の Secrets Manager ツール統合タイルでも表示されます。

  4. このインスタンスをサービス・インスタンス名で識別することを選択します。

  5. **「リージョン」「リソース・グループ」**のデフォルト値を確認して、必要であれば更新します。

  6. 使用する Secrets Manager サービスのインスタンスを選択します。

  7. ツールチェーンと Secrets Manager サービス・インスタンスの間に許可を作成するには、 「許可の作成」 ボタンをクリックします。 これにより、 Secrets Manager サービス・インスタンスに保管されている秘密情報へのアクセス権限がツールチェーンに付与されます。

  8. 「統合の作成」 をクリックします。

シークレットの適用

Secrets Manager ツール統合が構成されたら、それを使用してツールチェーンで必要とされる場所にシークレットを適用することができます。 このツール統合と「シークレット」ダイアログ・ボックスでは、任意のシークレット・タイプと IAM 資格情報シークレット・タイプの両方がサポートされます。

任意のシークレットを使用して、事前定義されたシークレット値を保管したり、「シークレット」ダイアログ・ボックスを使用して動的にマイニングされた IBM Cloud API キーを保管したりすることができます。 Secrets Manager サービス・インスタンス内に IAM 資格情報のシークレットを直接作成する必要があります。 これらのシークレットを作成した後、任意のセキュア・フィールドで「シークレット (Secrets)」ダイアログ・ボックスを使用して、ツールチェーン内で使用する IAM 資格情報シークレットを選択できます。 「シークレット」ダイアログ・ボックスには、任意のシークレット・タイプと IAM 資格情報シークレット・タイプの両方が表示され、シークレット名にはシークレット・タイプが大括弧で囲んで付加されます。

Secrets Manager に保管されている任意のシークレットを使用する

Slack Web フックや Artifactory API トークンなどのサード・パーティーのシークレットは、新規ツールチェーンを作成する前に、Secrets Manager に保存する必要があります。 シークレット・ダイアログを使用してツールチェーンを操作するときに、 IBM管理のシークレット ( IBM Cloud API キーなど) を任意のシークレット・タイプとして Secrets Managerにマイニングして保管できます。 ただし、「シークレット」ダイアログ・ボックスを使用してツールチェーン内のこれらのタイプのシークレットを選択する前に、 Secrets Manager で IAM 資格情報のシークレットを直接マイニングする必要があります。

以下の例では、 Secrets Manager に保管されている任意のシークレット・タイプを、 Delivery Pipeline ツール統合 に必要な IBM Cloud API キーに適用します。 同じ手順に従って、シークレット値を必要とする Continuous Delivery ツール統合のいずれかにシークレットを適用できます。

  1. キー・アイコンをクリックして、Secrets Manager API キーの IBM Cloud などのセキュア・ストアからシークレットを取得します。

  2. **「プロバイダー」**フィールドで、ツールチェーン・シークレットを管理するために使用する Secrets Manager ツール統合のプロバイダーおよび名前を指定します。 例えば、Secrets Manager ツール統合を使用するには、Secrets Manager: ibm-secrets-manager-1 を選択します。 Hashicorp Vault およびKey Protect など、他のプロバイダーを使用してツールチェーン・シークレットを管理することができます。

  3. シークレット・グループとシークレット名を選択して**「OK」**をクリックし、保管されているシークレットをそれと関連付けられたフィールドに適用します。

    " caption-side="bottom"}{: caption="への秘密の参照

    選択したシークレットの名前がカプセル形式で表示されます。 シークレット名をインラインで編集することはできませんが、削除アイコン をクリックして名前を削除することはできます。 シークレット名を再度選択して、既存のシークレット名を置き換えることもできます。 「シークレット」フィールドに手動で入力したり、貼り付けたりした場合、シークレット名は別の形式で表示されます。

    文字通りの秘密値
    秘密
    *

    シークレットが表示される形式は、その値がバックエンドのデータ保管庫に格納されているシークレットを参照しているのか、ツールチェーンに格納されているシークレットを参照しているのかを示します。 Secrets Manager などのシークレット・プロバイダーによって管理されるシークレットへの参照を使用することで、シークレット値が一元化され、単一の場所に安全に保管されます。 このアプローチは、シークレットのスプロールや急増を解決し、ツールチェーンを更新しなくてもシークレットを更新できることを意味します。 シークレット参照を使用する場合、実際のシークレット値は、ツールチェーンが実行されるときに Secrets Manager から動的に取得することによって解決されます。 このアプローチは、ツールチェーン・シークレットの値を定期的にローテーションする必要がある場合に役立ちます。

IAM 資格情報のシークレットの使用

IAM 資格情報のシークレット・タイプは、IAM と完全に統合されています。 Secrets Manager は、IAM 資格情報シークレットに関連付けられている動的サービス ID と API キーを自動管理します。 Continuous Delivery および Secrets Manager サービス API は、 Continuous Delivery ツールチェーンおよびパイプライン・ワークロード内の許可された IAM 資格情報シークレット参照を解決します。

Secrets Managerで IAM 資格情報シークレットを作成する場合は、 「リースの有効期限が切れるまで IAM 資格情報を再使用する」 チェック・ボックスを選択してください。 また、パイプラインの実行にパブリック・ワーカー・エージェントを使用する場合は、最小 12 時間のリース期間を指定します。 プライベート・ワーカー・エージェントを使用する場合は、パイプラインの強制キャンセル期間に最小リース期間を設定してください。 これらの設定をアカウント管理者に確認することをお勧めします。 再利用オプションと適切なリース期間を設定することで、パイプラインの実行中に動的に管理される IAM 資格情報サービス ID API キーが保持されるようにすることができます。

IAMクレデンシャルのリース期間とAPI
の再利用*IAMクレデンシャルのリース期間とAPIキーの再利用
IAMクレデンシャルのリース期間とAPIキーの再利用

Secrets Manager ダッシュボードから IAM 資格情報に対してローテート・アクションを実行することで、 Continuous Delivery パイプラインで使用される API キー循環のコンプライアンス状況要件を維持できます。 Secrets Manager は、IAM と連携して、IAM 資格情報シークレットの新しい API キーを生成し、シークレットのバージョン管理を行います。

IAM 資格情報のシークレット・タイプは、シークレットのローテーション中およびローテーション後にサービスの継続性を提供するのにも役立ちます。

  • 新しい Continuous Delivery パイプライン・ワークロードは、リース期間が満了するまで、新しくローテーションされた API キーを使用します。
  • ローテーション前に発行された API キーを使用して実行されている既存の Continuous Delivery パイプライン・ワークロードは、前のバージョンのリース期間が期限切れになるまで、引き続き前のバージョンで実行できます。

caption-side=bottom"
IAMクレデンシャル・シークレット・ローテーション*
*IAMクレデンシャル・シークレット・ローテーション

Secrets Managerの IAM 資格情報のシークレット・タイプについて詳しくは、 IAM 資格情報の作成 を参照してください。

キー値シークレットの使用

「シークレット (Secrets)」ダイアログのキー値シークレットから個々のキーを選択することにより、ツールチェーンで使用するキー値シークレットを選択できます。 あるいは、シークレット全体を選択することもできます。

  1. キー・アイコンをクリックして、Secrets Manager API キーの IBM Cloud などのセキュア・ストアからシークレットを取得します。

  2. **「プロバイダー」**フィールドで、ツールチェーン・シークレットを管理するために使用する Secrets Manager ツール統合のプロバイダーおよび名前を指定します。 例えば、Secrets Manager ツール統合を使用するには、Secrets Manager: ibm-secrets-manager-1 を選択します。 Hashicorp Vault およびKey Protect など、他のプロバイダーを使用してツールチェーン・シークレットを管理することができます。

  3. シークレットグループとシークレット名を選択し、保存されたシークレットをフィールドに適用します。 オプション: 秘密鍵を選択します。 「OK」 をクリックします。 選択したシークレットの名前がカプセル形式で表示されます。 インラインで秘密の名前を編集することはできませんが、削除アイコン をクリックして名前を削除することができます。 シークレット名を再度選択して、既存のシークレット名を置き換えることもできます。 シークレットフィールドにシークレット名を手動で入力または貼り付けると、別の形式で表示されます。

ツールチェーン・テンプレートへの Secrets Manager ツール統合の追加

テンプレート・レポの'toolchain.yaml ファイルにサービス定義を追加することで、Secrets Managerツール統合をツールチェーン・テンプレートに追加できます。 このファイルは、ツールチェーンの設計青写真であり、そのテンプレートに基づいてツールチェーン・インスタンスを作成するときに使用できるすべてのツール統合が含まれています。 既存のツールチェーン・テンプレートをカスタマイズして Secrets Manager ツール統合を含めるには、YAML 定義を挿入します。

  sm-compliance-secrets:
    service_id: secretsmanager
    parameters:
      name: sm-compliance-secrets
      instance-id-type: instance-name
      region: us-south
      resource-group: default
      instance-name: ffs-secrets
      setup-authorization-type: create

CRN によるシークレットの識別

CRN によってシークレットを識別するように Secrets Manager ツール統合を構成すると、ツールチェーンは Secrets Managerに保管されている任意の資格情報シークレット、キー値、および IAM 資格情報シークレットにアクセスできます。 Secrets Manager内のさまざまなタイプのシークレットについて詳しくは、 さまざまなタイプのシークレットの処理 を参照してください。 CRN シークレットにはキー値のシークレット全体のみを使用でき、個々のキーには使用できません。

ツールチェーンの一部であるシークレットをセキュアに管理するように、Secrets Manager を構成します。

  1. ツールチェーン作成時にこのツール統合を構成する場合は、「構成可能な統合」セクションで **「Secrets Manager」をクリックします。 オプションのツール統合として定義されている場合、Secrets Manager は「その他のツール (More Tools)」**にあります。 サービス・インスタンス CRN によってこのインスタンスを識別することを選択します。 ツールチェーンと Secrets Manager サービス・インスタンスの間に許可を作成するには、 「許可タイプ」 ドロップダウンから 「このツールチェーンの許可を作成します」 オプションを選択します。 これにより、 Secrets Manager サービス・インスタンスに保管されている秘密情報へのアクセス権限がツールチェーンに付与されます。

  2. ツールチェーンがあり、そこにこのツール統合を追加する場合、IBM Cloudコンソールから、メニューアイコンハンバーガーアイコン>Platform Automation>Toolchains をクリックします。 「ツールチェーン」ページで、ツールチェーンをクリックしてその「概要」ページを開きます。 あるいは、アプリの「概要」ページのContinuous Deliveryカードで、**「ツールチェーンの表示」をクリックします。 次に、「概要」**をクリックします。

    a. **「ツールの追加」**をクリックします。

    b. 「ツール統合」セクションで、**「Secrets Manager」**をクリックします。

  3. ツールチェーンで使用する Secrets Manager ツール統合のインスタンスの名前を指定します。

  4. サービス・インスタンス CRN によってこのインスタンスを識別することを選択します。

  5. シークレットが保管されている Secrets Manager サービス・インスタンスの CRN を指定します。 このサービス・インスタンスは、ツールチェーンが別のアカウント内の シークレットへのアクセスを許可されている 場合は、そのアカウント内に存在できます。

  6. ツールチェーンと Secrets Manager サービス・インスタンスの間に許可を作成するには、 「許可の作成」 ボタンをクリックします。 これにより、 Secrets Manager サービス・インスタンスに保管されている秘密情報へのアクセス権限がツールチェーンに付与されます。

  7. 「統合の作成」 をクリックします。

シークレットの適用

Secrets Manager ツール統合を構成し、そのアカウント内のシークレットにアクセスする権限をツールチェーンに 付与 した後、それを使用して、ツールチェーンが必要とする任意の場所にシークレットを適用できます。

以下のいずれかの方法を使用して、ツールチェーンで使用する CRN シークレットを選択できます。

  • シークレットの CRN を Secrets Manager サービス・インスタンスからコピーして、シークレット・フィールドの編集ボックスに貼り付けます。 このシークレットは、 Secrets Manager ツール統合をツールチェーンに追加したときに構成された Secrets Manager サービス・インスタンス内になければなりません。

  • 「シークレット」ダイアログを使用します。 この方法の使用方法については、 名前によるシークレットの識別 を参照してください。

    CRN シークレットを選択する場合は、必ず 「プロバイダー」 オプションから CRN 構成のツール・カードを選択してください。

CRN シークレットを含むフィールドが表示されると、 Secrets Manager ツール統合はシークレットの名前を取得しようとします。 シークレットが存在する Secrets Manager サービス・インスタンスを開くには、シークレットをクリックします。 以下のシナリオでは、秘密名を取得できず、警告アイコンが表示されます。

  • ツールチェーンに、正しく構成された Secrets Manager 統合が含まれていません。
  • ツールチェーン許可が正しくありません。
  • フィールドに有効なCRNが含まれていない。

シークレットへのアクセスをツールチェーンに許可する

Secrets Manager に保管されているシークレットへの参照は、ツールチェーンの実行時に動的に解決されます。 必要なシークレットにアクセスするには、ツールチェーンに Secrets Manager インスタンスへのアクセスを許可する必要があります。 テンプレートからツールチェーンを作成する場合は、 Secrets Manager 統合の構成時に 「許可タイプ」 ドロップダウンを使用します。 Secrets Manager 統合を既存のツールチェーンに追加する場合は、 「許可の作成」 ボタンを使用します。

IBM Cloud で許可を表示するには、以下の手順を実行します。

  1. IBM Cloud コンソールから、「管理」 > **「アクセス (IAM)」**とクリックします。

  2. 「許可」 をクリックします。

    また、Manage authorizationsページで自分の権限にアクセスすることもできます。

    必要に応じて、許可を手動で作成することができます。 シークレット参照を正常に解決するには、ツールチェーン・インスタンスが正しい Secrets Manager サービス・インスタンスへの Viewer アクセスと SecretsReader アクセスの両方を持っている必要があります。

    CRN によってシークレットを識別する Secrets Manager ツール統合が別のアカウントのシークレットにアクセスするように構成されている場合は、 Secrets Manager サービス・インスタンスが存在するアカウントで許可を作成する必要があります。

API を使用した Secrets Manager の構成

Secrets Manager ツール統合は、 read、および update ツール統合を作成する際に ツールチェーン HTTP API および SDK で使用できる以下の構成パラメーターをサポートします。

secretsmanager 値を使用して、要求本体に tool_type_id プロパティーを指定する必要があります。

Secrets Managerツール統合パラメータ
パラメーター 使用法 タイプ Terraform 引数 説明
名前 必須、更新可能 ストリング 名前 このツール統合の名前。 名前ベースのシークレット参照には、シークレットが存在するシークレット・ストアを識別するためにこの名前が含まれます。 ツールチェーンに統合されたすべてのシークレット・ストア・ツールには、シークレットの解決が適切に機能するように固有の名前を付ける必要があります。
インスタンス ID タイプ 必須、更新可能 列挙 instance_id_type サービス・インスタンス ID のタイプ。 受け入れられる値は、 instance-name および instance-crn です。 デフォルトでは、この値は「instance-name」に設定されている。
インスタンス CRN 必須、更新可能 ストリング インスタンス CRN Secrets Manager サービス・インスタンスの CRN。 このパラメーターは、 instance-crninstance_id_type として使用する場合にのみ使用します。
リージョン 必須、更新可能 ストリング ロケーション Secrets Manager サービス・インスタンスが配置されている IBM Cloud ロケーション。 このパラメーターは、 instance-nameinstance_id_type として使用する場合にのみ使用します。
リソース・グループ 必須、更新可能 ストリング resource_group_name Secrets Manager サービス・インスタンスが配置されているリソース・グループの名前。 このパラメーターは、 instance-nameinstance_id_type として使用する場合にのみ使用します。
インスタンス名 必須、更新可能 ストリング instance_name Secrets Manager サービス・インスタンスの名前。 このパラメーターは、 instance-nameinstance_id_type として使用する場合にのみ使用します。

Secrets Manager に関する詳細

Secrets Managerについて詳しくは、 Secrets Manager を参照してください。