IBM Cloud Docs
キー・バリューのシークレットを保管しています

copyright: years: 2024 lastupdated: "2024-11-28"

keywords: key:value、key/value、key-value、key: value 秘密鍵の保管

subcollection: secrets-manager


キー・バリューのシークレットを保管しています

IBM Cloud® Secrets Managerを使用して、複雑なJSONドキュメントを含む、IBM Cloudの内部または外部の保護されたシステムにアクセスするために使用されるキー・バリュー・シークレットを保存および管理することができます。

キー・バリューシークレットは、JSONオブジェクトとして構造化された機密データを保持するために使用できるタイプのアプリケーション・シークレットです。 シークレットを作成したら、そのシークレットを使用して、アプリケーションをデータベースやサード・パーティー・アプリなどの保護リソースに接続できます。 シークレットは、専用の Secrets Manager サービス・インスタンスに安全に保管され、シークレットのライフサイクルを一元管理できます。

Secrets Managerを使用して、キーごとに複数のバージョンを保管し、キー・バリューシークレットの履歴とメタデータにアクセスすることができます。 詳しくは、 Managing key-value secrets with Vault を参照してください。

ユーザーが Secrets Manager で管理できるシークレットのタイプについて詳しくは、シークレットの概要を参照してください。

開始前に

開始する前に、必要なレベルのアクセス権限を持っていることを確認してください。 シークレットを作成または追加するには、ライター・サービス・ロールまたはそれ以上が必要です。

UIでのキー・バリューシークレットを作成しています

Secrets ManagerUIを使用してキー・バリューシークレットを追加するには、以下の手順を実行します。

  1. IBM Cloud コンソールで、**「メニュー」**アイコン「メニュー」アイコン **>「リソース・リスト」**をクリックします。

  2. サービスのリストから、Secrets Managerのインスタンスを選択します。

  3. **「シークレット」テーブルで、「追加」**をクリックします。

  4. シークレットタイプのリストから、Key-Value タイルを選択する。

  5. 次へ をクリックします。

  6. シークレットを簡単に識別するための名前と説明を追加します。

  7. シークレットに割り当てる シークレットグループインスタンス内に含まれているシークレットが準拠する必要のある環境と制約。 ユーザーをシークレット・グループに関連付けることで、アクセス権限とコラボレーションを有効にできます。 を選択します。

    シークレット・グループがありませんか。 「シークレット・グループ」フィールドで、「作成」 をクリックすると、新規グループの名前と説明を入力できます。 新しいグループにシークレットが自動的に追加されます。 シークレット・グループについて詳しくは、シークレットの編成をチェックしてください。

  8. オプション:インスタンスで類似のシークレットを検索するのに役立つラベルを追加します。

  9. オプション: シークレットまたは特定のバージョンのシークレットにメタデータを追加します。

    1. ファイルをアップロードするか、メタデータとバージョン・メタデータを JSON 形式で入力します。
  10. 次へ をクリックします。

  11. ファイルを選択するか、シークレットに関連付けるシークレット値を入力します。

キー・バリューデータはJSONオブジェクトとして入力する必要があります。 最大ファイル・サイズは512KBです。

  1. 次へ をクリックします。
  2. シークレットの詳細を確認します。
  3. 追加 をクリックします。

CLI からのキー値シークレットの作成

Secrets Manager CLI プラグインを使用してキー値シークレットを作成するには、ibmcloud secrets-manager secret-create コマンドを実行します。 例えば、次のコマンドはキーと値の秘密を作成し、その値として'{"key1":"value1"} を格納する。

ibmcloud secrets-manager secret-create  \
  --secret-prototype='{
  "name": "example-kv-secret","description": "Description of my key-value secret.","secret_type": "kv","secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a","labels": ["dev","us-south"],"data": {"key1": "val1","key2": "val2"},"custom_metadata": {"metadata_custom_key": "metadata_custom_value"},"version_custom_metadata": {"custom_version_key": "custom_version_value"}}'

このコマンドでは、シークレットの ID 値と他のメタデータが出力されます。 コマンド・オプションについては、ibmcloud secrets-manager secret-create を参照してください。

APIを使用したキー・バリューシークレットを作成しています

Secrets ManagerAPIを使用して、キー・バリューシークレットをプログラマチックに作成できます。

以下の例は、キー・バリューシークレットを作成して保管するために使用できるクエリを示しています。 API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。

custom_metadata および version_custom_metadata 要求パラメーターを使用して、組織のニーズに関連するメタデータを保管できます。 version_custom_metadata の値は、シークレットのバージョンについてのみ返されます。 シークレットのカスタム・メタデータは、最大 50 バージョンの他のすべてのメタデータとして保管されます。機密データを含めることはできません。

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
          "name": "example-kv-secret",
          "description": "Description of my kv secret.",
          "secret_type": "kv",
          "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
          "labels": [
            "dev",
            "us-south"
          ],
          "data": {
            "key1": "val1",
            "key2": "val2"
          },
          "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
          },
          "version_custom_metadata": {
            "custom_version_key": "custom_version_value"
          }
        }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

成功すると、シークレットの ID 値が他のメタデータとともに応答で返されます。 必須およびオプションのリクエスト・パラメータの詳細については、秘密の作成を参照してください。

Terraform を使用したキー値シークレットの作成

Secrets Managerの Terraform を使用して、キー値シークレットをプログラマチックに作成できます。

秘密資格情報などの機密性の高い入力変数を保護するための Terraform のベスト・プラクティスに従ってください。 詳しくは、 機密性の高い入力変数の保護 を参照してください。

以下の例は、 terraform.tfvars ファイルに機密性の高い値を設定することによって、キー値シークレットを作成するために使用できる構成を示しています。

  1. variables.tf ファイル内のキー値シークレット・データの入力変数を定義します。
    variable "kv_secret_data" {
        description = "KV secret data"
        type        = map(any)
        sensitive   = true
    }
  1. terraform.tfvars ファイル内の kv_secret_data 変数に値を割り当てます。

    .tfvars ファイルを使用して値を設定することにより、残りの変数値から機密性の高い値を分離し、構成を操作するユーザーが機密性の高い値を認識するようにすることができます。 セキュリティー上の理由から、 .tfvars ファイルの保守と共有は、適切なアクセス権限を持つユーザーのみが行う必要があります。 また、機密性の高い値を持つ .tfvars ファイルを、Github などのバージョン管理に平文で保管しないように注意する必要があります。

    kv_secret_data = {
        "key1" : "value1"
    }
    
  2. main.tf ファイル内にキー値シークレットを作成します。

次の例は、キーと値の秘密の作成に使える設定を示している。

    resource "ibm_sm_kv_secret" "sm_kv_secret"{
        instance_id = local.instance_id
        region = local.region
        name = "kv-secret-example"
        description = "Extended description for this key-value secret."
        labels = ["my-label"]
        secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
        data = var.kv_secret_data
    }