Secrets Manager の統合 Schematics

IBM Cloud® Schematics との統合をサポートしている。 IBM Cloud® Secrets Manager との統合をサポートしており、 Schematics のコンフィギュレーションで実際の秘密の値を表示することなく、機密情報を安全に管理することができます。 秘密をハードコーディングする代わりに、 Secrets Manager から秘密の参照を直接提供することで、セキュリティを強化し、秘密のローテーションを簡素化することができます。

Schematics で Secrets Manager を統合することで、Terraform、 Ansible、Extensions などの自動化スタックで秘密の値を公開する必要がなくなる。 直接シークレットローテーションとセキュリティの向上により、 Secrets Manager は Schematics ワークフローの保守性を高めます。

Secrets Manager を Schematics に統合し、シークレットにアクセスするには、 Secrets Manager と Schematics の間にサービス間ポリシーを作成し、 ViewerSecret Reader のロールを割り当てる必要がある。

開始前に

  • キー・バリューの秘密を持っていなければならない。 秘密を作成するには、 Secrets Manager インスタンスの作成を 参照してください。
  • Schematics サービスに Secrets Manager を統合するには、 サービス間認証を 設定する必要がある。
  • 以下の手順に従って、 Schematics サービスにサービス間認証アクセスを許可してください。
  1. IBM Cloud コンソールにログインする。
  2. Manage > Access (IAM) > Authorizations > Createをクリックします。
  3. ソースアカウントをこのアカウント 」として選択します。
  4. サービスを選択 Schematics.
  5. [リソース] として [すべてのリソース] または [特定のリソース] を選択します。
  6. Secrets Manager としてターゲット・ サービスを選択する。
  7. ビューアーと シークレットリーダーの 役割を選択する。
  8. ソースサービスおよび従属サービスによる権限委譲を有効にするには、 [Authorize dependent services ]を選択します。
  9. 「許可」 をクリックします。

Schematics Terraformにコンソールを使って Secrets Manager

Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。

  1. IBM Cloud コンソールにログインする。
  2. メニューアイコンの ハンバーガーアイコン > Platform Automation > をクリックします。 Schematics > Terraform > Create workspaceをクリックします。
    • Specify Template セクション:
      • GitHub, GitLab, または Bitbucket リポジトリ URL- <provide your Terraform template Git repository URL>
      • 個人アクセストークン- <leave it blank>Open reference picker をクリックして、 Secrets Manager キー参照を選択できます。 詳しくは、 Secrets Manager インスタンスの作成を 参照。
  3. Select a reference]ページで、[ Account]、[ Service instance ]、および[ Secret] を選択します。
  4. 「OK」 をクリックします。
  5. ワークスペースを作成するには、[ 作成] をクリックします。

参照として格納されている入力変数の秘密の参照を観察する。

Secrets Manager を変数で積分する

Schematics Terraform変数を安全に更新するために、 Schematics で Secrets Manager を有効にする手順に従ってください。

  1. IBM Cloud コンソールにログインする。
  2. メニューアイコンの ハンバーガーアイコン > Platform Automation > をクリックします。 Schematics> をクリックする。
  3. 編集するワークスペースをクリックします。
  4. 「設定」 をクリックします。 変数][編集] アイコンをクリックし、 api_key パラメータを編集する。
  5. Edit VariableでOpen reference picker をクリックして、Select a reference page、add **、 ** Service instance 、および ** Secretを表示します。
  6. Save をクリックすると、秘密の参照パラメータが ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME として表示されます。

参照として格納されている入力変数の秘密の参照を観察する。

CLI を使用して Schematics に Secrets Manager を統合する手順

Schematics で Secrets Manager を有効にして、 Schematics Terraform を安全に更新するための手順に従ってください。

  1. コマンドラインをダウンロードしてインストール し、共有コマンドを実行してリージョンをターゲットにし、サービスをサービスポリシーに作成し、 Secrets Manager インスタンスを作成し、Terraform コードで秘密を参照し、適用する。

    ibmcloud login --sso
    ibmcloud target -r <region>
    ibmcloud iam service-policy-create --source-service-name schematics --target-service-instance-name <your-secrets-manager-name> --roles "Viewer,SecretReader"
    ibmcloud secrets-manager secret-create --secret-type arbitrary --name <secret-name> --payload <secret-value>
    
  2. Terraformのコードで秘密を参照する。

     variable "my_secret" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  3. Schematics ワークスペースを適用する

    ibmcloud schematics workspace apply --id <WORKSPACE_ID>
    

Schematics TerraformにAPIを使って Secrets Manager

Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。

  1. 手順に従って、API を使用して IAM アクセス・トークンを取得し、IBM Cloud Schematics で認証します。

  2. IBM Cloud Resource Controller API を使用して、 Secrets Manager インスタンスを作成します。

     curl -X POST /v1/resource_instances -H "Authorization: <iam_access_token>" -d '{"name": "my-secrets-manager",
     "target": "test-eu-de",
     "resource_group": "default",
     "resource_plan_id": "<plan-id-for-secrets-manager>"
     }'
    
  3. Secrets Manager API を使用して、 Secrets Manager にシークレットを作成します。

     curl -X POST /api/v1/secrets/arbitrary  -H "Authorization: <iam_access_token>" -d '{"name": "my-token-secret","description": "Token for private Git repo","secret_group_id": "<secret-group-id>","resources": [],"payload": "your-token-value"}'
    
  4. IAMポリシーをサービスするサービスを作成する

     {
       "type": "service",
       "subjects": [{
         "attributes": [{
           "name": "serviceName",
           "value": "schematics"
         }]
       }],
       "roles": [
         { "role_id": "crn:v1:bluemix:public:iam::::role:Viewer" },
         { "role_id": "crn:v1:bluemix:public:iam::::role:SecretReader" }
       ],
       "resources": [{
         "attributes": [{
           "name": "serviceInstance",
           "value": "<secrets-manager-instance-id>"
         }]
       }]
     }
    
  5. Schematics ワークスペースを使用して、Terraform 変数ファイルで秘密を参照する。

     variable "git_token" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  6. Terraformテンプレートでワークスペースを更新し、シークレットを参照する。

    curl -X PATCH /v1/workspaces/{workspace_id}
    
  7. Terraformテンプレートでワークスペースを適用する。

    curl -X POST /v1/workspaces/{workspace_id}/actions/apply
    

Schematics Terraformで Secrets Manager、Terraformを使って統合する

Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。

  1. Secrets Manager インスタンスを定義する。

  2. Secrets Manager、シークレットを作成する。 CLIを使用するか、手動でシークレットを作成することができます。 Terraformでは、シークレットは通常、直接作成されるのではなく、参照される。

  3. IAM Service 間ポリシー を作成します。

  4. Terraform VariablesでSecretを参照する。 secret-id を Secrets Manager に格納されている秘密の実際のIDに置き換える。

     variable "git_token" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  5. Schematics TerraformプロバイダまたはCLIを使用して、前述の構成で ワークスペースを作成 する。