IBM Cloud Docs
ユーザー資格情報の保管

ユーザー資格情報の保管

IBM Cloud® Secrets Manager を使用して、IBM Cloud の内部または外部で保護サービスにログインしてアクセスするために使用できるユーザー名とパスワードを保管できます。

ユーザー資格情報は、外部サービスまたはアプリケーションへのログインまたはアクセスに使用できるユーザー名とパスワードの値で構成されます。 シークレットは、専用の Secrets Manager サービス・インスタンスに安全に保管されます。 インスタンスでは、そのライフサイクルを一元的に管理し、有効期限、自動ローテーション・ポリシーなどを設定することで、シークレットの存続期間を制御できます。

ユーザー認証情報では、パスワード値のみがローテーション可能である。 一度設定したユーザー名は変更できない。

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

開始前に

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

UI でのユーザー資格情報の追加

Secrets Manager UI を使用してユーザー名およびパスワードを保管するには、以下の手順を実行します。

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

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

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

  4. 秘密タイプのリストから、ユーザー資格情報タイルを選択する。

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

  6. シークレットを容易に識別できる名前と説明を追加します。

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

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

  8. オプション: インスタンス内の類似シークレットを検索しやすくするためのラベルを追加します。

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

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

  11. シークレットに関連付けるユーザー名とパスワードを入力します。

パスワードを生成することを選択した場合、Secrets Managerは既存の値を、大文字、小文字、数字、記号を含むランダムに生成された32文字のパスワードに置き換える。 生成されたパスワードの長さ (12 から 256 文字)、および数字、記号、および大文字を含めるかどうかを構成することにより、さらにカスタマイズすることを選択できます。

  1. オプション: シークレットの存続期間を制御するために有効期限オプションとローテーション・オプションを有効にします。
  2. シークレットの有効期限を設定するには、有効期限のトグルを**「はい」**に切り替えます。
  3. 秘密を30日、60日、90日間隔で回転させるには、秘密の自動回転トグルを「はい」に切り替えてください。
  4. 次へ をクリックします。
  5. シークレットの詳細を確認します。
  6. 追加 をクリックします。

CLI からのユーザー資格情報の追加

始める前に、CLIのドキュメント に従ってAPIエンドポイントを設定してください。

Secrets Manager CLI プラグインを使用してユーザー名およびパスワードを保管するには、ibmcloud secrets-manager secret-create コマンドを実行します。

ibmcloud secrets-manager secret-create \    
    --secret-prototype='{"name": "example-username-password-secret","description": "Description of my user credentials secret","secret_type": "username_password","secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa","labels": ["dev","us-south"],"username": "example-username","password": "example-password","rotation": {"auto_rotate": true,"interval": 10,"unit": "day"},"custom_metadata": {"metadata_custom_key": "metadata_custom_value"},"version_custom_metadata": {"custom_version_key": "custom_version_value"}}'

CLI からのランダム・パスワードの生成

生成されたパスワードの長さ (12 から 256 文字)、および数字、記号、および大文字を含めるかどうかを構成することにより、さらにカスタマイズすることを選択できます。 Secrets Manager CLI プラグインを使用してランダム・パスワードを生成するには、 ibmcloud secrets-manager secret-create コマンドを実行し、 password_generation_policy フィールドを含めます。

ibmcloud secrets-manager secret-create \    
    --secret-prototype='{"name": "example-username-password-secret","description": "Description of my user credentials secret","secret_type": "username_password","secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa","labels": ["dev","us-south"],"username": "example-username","password": "example-password","rotation": {"auto_rotate": true,"interval": 10,"unit": "day"},"password_generation_policy": {"length": 24, "include_digits": true, "include_symbols": false, "include_uppercase": true}, "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 Manager API を呼び出すと、ユーザー名とパスワードをプログラムで保管できます。

以下の例は、ユーザー名およびパスワードのシークレットを作成するときに使用できる照会を示しています。 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-username-password-secret",
      "description": "Description of my user credentials secret",
      "secret_type": "username_password",
      "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
      "labels": [
        "dev",
        "us-south"
      ],
      "username": "example-username",
      "password": "example-password",
      "rotation": {
        "auto_rotate": true,
        "interval": 10,
        "unit": "day"
      },
      "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"

API を使用したランダム・パスワードの生成

生成されたパスワードの長さ (12 から 256 文字)、および数字、記号、および大文字を含めるかどうかを構成することにより、さらにカスタマイズすることを選択できます。 Secrets Manager API を呼び出すときに、 password_generation_policy フィールドを含めます。

curl -X POST
    -H "Authorization: Bearer {IAM_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "example-username-password-secret",
      "description": "Description of my user credentials secret",
      "secret_type": "username_password",
      "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
      "labels": [
        "dev",
        "us-south"
      ],
      "username": "example-username",
      "password": "example-password",
      "rotation": {
        "auto_rotate": true,
        "interval": 10,
        "unit": "day"
      },
      "password_generation_policy": {
        "length": 24,
        "include_digits": true,
        "include_symbols": false,
        "include_uppercase": true
      },
      "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"

Terraform を使用したユーザー資格情報の追加

Secrets Managerの Terraform を使用して、ユーザー名とパスワードをプログラマチックに保管できます。

Terraform 構成でオプションの password 引数を設定してパスワードを指定することも、ランダム・パスワードの生成を選択することもできます。 password 引数を省略すると、 Secrets Manager は、大文字、小文字、数字、および記号を含む 32 文字のランダム・パスワードを生成します。 生成されたパスワードの長さ (12 から 256 文字)、および数字、記号、および大文字を含めるかどうかを構成することにより、さらにカスタマイズすることを選択できます。

自動ローテーション・ポリシーを使用してシークレットを構成する場合は、 password 引数を省略して、初期パスワードも自動的に生成されるようにすることをお勧めします。 これは、Terraform のドリフト状態を回避するためです。自動ローテーションが行われた後、Terraform は、Terraform の外部でパスワードが変更されたことを検出します。

次の例は、ランダムに生成されたパスワードとオートローテーションを有効にしたユーザー名とパスワードのシークレットを作成するために使用できるクエリを示しています。 この例では、シークレットのデフォルト以外のパスワード生成ポリシーを指定する方法も示しています。

    resource "ibm_sm_username_password_secret" "test_username_password_secret" {
        instance_id = local.instance_id
        region = local.region
        secret_group_id = "default"
        name = "test-user-creds-secret"
        username = "sm_username"
        rotation {
            auto_rotate = true
            interval = 10
            unit = "day"
        }
        password_generation_policy {
            length = 24
            include_digits = true
            include_symbols = false
            include_uppercase = true
        }
    }

次の例は、Terraformの設定で提供されたパスワードを使ってユーザー名とパスワードのシークレットを作成するために使えるクエリです。 この例では自動ローテーションが無効になっていますが、構成内の password 引数の値を変更することで、パスワードを手動でローテーションすることができます。

    resource "ibm_sm_username_password_secret" "test_username_password_secret" {
        instance_id = local.instance_id
        region = local.region
        secret_group_id = "default"
        name = "test-user-creds-secret"
        username = "sm_username"
        password = "sm_password"
    }

成功すると、シークレットの ID 値が他のメタデータとともに応答で返されます。 必須およびオプションの要求パラメーターについて詳しくは、API リファレンスをチェックしてください。