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 の間にサービス間ポリシーを作成し、 Viewer と Secret Reader のロールを割り当てる必要がある。
開始前に
- キー・バリューの秘密を持っていなければならない。 秘密を作成するには、 Secrets Manager インスタンスの作成を 参照してください。
- Schematics サービスに Secrets Manager を統合するには、 サービス間認証を 設定する必要がある。
- 以下の手順に従って、 Schematics サービスにサービス間認証アクセスを許可してください。
- IBM Cloud コンソールにログインする。
- Manage > Access (IAM) > Authorizations > Createをクリックします。
- ソースアカウントを 「 このアカウント 」として選択します。
- サービスを選択 Schematics.
- [リソース] として [すべてのリソース] または [特定のリソース] を選択します。
- Secrets Manager としてターゲット・ サービスを選択する。
- ビューアーと シークレットリーダーの 役割を選択する。
- ソースサービスおよび従属サービスによる権限委譲を有効にするには、 [Authorize dependent services ]を選択します。
- 「許可」 をクリックします。
Schematics Terraformにコンソールを使って Secrets Manager
Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。
- IBM Cloud コンソールにログインする。
- メニューアイコンの
> 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 インスタンスの作成を 参照。
- GitHub, GitLab, または
- Specify Template セクション:
- Select a reference]ページで、[ Account]、[ Service instance ]、および[ Secret] を選択します。
- 「OK」 をクリックします。
- ワークスペースを作成するには、[ 作成] をクリックします。
参照として格納されている入力変数の秘密の参照を観察する。
Secrets Manager を変数で積分する
Schematics Terraform変数を安全に更新するために、 Schematics で Secrets Manager を有効にする手順に従ってください。
- IBM Cloud コンソールにログインする。
- メニューアイコンの
> Platform Automation > をクリックします。 Schematics> をクリックする。
- 編集するワークスペースをクリックします。
- 「設定」 をクリックします。 変数] で [編集] アイコンをクリックし、
api_keyパラメータを編集する。 - Edit Variableで、
Open reference pickerをクリックして、Select a reference page、add **、 ** Service instance 、および ** Secretを表示します。 - Save をクリックすると、秘密の参照パラメータが
ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAMEとして表示されます。
参照として格納されている入力変数の秘密の参照を観察する。
CLI を使用して Schematics に Secrets Manager を統合する手順
Schematics で Secrets Manager を有効にして、 Schematics Terraform を安全に更新するための手順に従ってください。
-
コマンドラインをダウンロードしてインストール し、共有コマンドを実行してリージョンをターゲットにし、サービスをサービスポリシーに作成し、 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> -
Terraformのコードで秘密を参照する。
variable "my_secret" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
Schematics ワークスペースを適用する
ibmcloud schematics workspace apply --id <WORKSPACE_ID>
Schematics TerraformにAPIを使って Secrets Manager
Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。
-
手順に従って、API を使用して IAM アクセス・トークンを取得し、IBM Cloud Schematics で認証します。
-
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>" }' -
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"}' -
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>" }] }] } -
Schematics ワークスペースを使用して、Terraform 変数ファイルで秘密を参照する。
variable "git_token" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
Terraformテンプレートでワークスペースを更新し、シークレットを参照する。
curl -X PATCH /v1/workspaces/{workspace_id} -
Terraformテンプレートでワークスペースを適用する。
curl -X POST /v1/workspaces/{workspace_id}/actions/apply
Schematics Terraformで Secrets Manager、Terraformを使って統合する
Schematics Terraformと安全に接続するために、 Schematics の Secrets Manager を有効にする手順に従ってください。
-
Secrets Manager、シークレットを作成する。 CLIを使用するか、手動でシークレットを作成することができます。 Terraformでは、シークレットは通常、直接作成されるのではなく、参照される。
-
IAM Service 間ポリシー を作成します。
-
Terraform VariablesでSecretを参照する。
secret-idを Secrets Manager に格納されている秘密の実際のIDに置き換える。variable "git_token" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
Schematics TerraformプロバイダまたはCLIを使用して、前述の構成で ワークスペースを作成 する。