概要
本記事では、Secrets Managerについて記載し、実際にUser/Passwordを登録する手順を記載します。
Secrets ManagerはCertificate Managerの代替としても紹介されていますが、管理対象や機能など異なる部分があるので、ご注意ください。
Secrets Managerの構成
Secrets Managerは以下で構成されます。
- シークレット
- シークレット・グループ
-
シークレット・エンジン
それぞれについて、以下で詳細説明します。
シークレットについて
Secrets Managerは、シークレットと呼ばれる機密情報を管理します。シークレットには、以下の様な、機密システムにアクセスするために使用する情報が該当します。
- ユーザー認証情報
- SSL証明書
- IAMキー (IBM Cloudサービスで使用)
- 外部APIキー
Secrets Managerでは、メタデータとシークレットの値で管理されます。
以下の画像はシークレットのjson表記です。
シークレット・グループについて
Secrets Managerでは、グループを作成してシークレットを編成し、チームの誰がグループに属するシークレットにアクセスできるかを制御できます。シークレット・グループでは、Manager、Writer、Secrets Reader、Readerの4種類で分類されます。
- Manager:Writer以上の権限を持ち、シークレットグループの管理、シークレットエンジンの設定、シークレットポリシーの管理など、特権的なアクションを完了することができます。
- Writer:シークレットの作成と編集を含む、SecretsReaderの役割を超える権限を持ちます。(シークレットグループの作成、シークレットのローテーションポリシーの管理、シークレットエンジンの設定を行うことはできません。)
- SecretsReader:読み取り専用のアクションを実行することができ、また、シークレットに関連付けられたシークレットデータにアクセスすることができます。(シークレットを作成したり、既存シークレットの値を変更したりすることはできません)
-
Reader:サービス固有のリソースを表示するなど、Secrets Manager内で読み取り専用のアクションを実行できます。Readerは、シークレットに関連付けられたメタデータにのみアクセスすることができます。
必要でなくなったシークレット・グループは削除できます。
シークレット・エンジンについて
シークレット・エンジンは、パスワードや API キーなど特定のタイプのシークレットのバックエンドとして機能します。シークレット・エンジンは、タイプに応じてデータを保管したり、オンデマンドでシークレットを生成したりすることができます。
一部のエンジンは、インスタンスで使用するには事前の構成が必要です。例えば、TLS 証明書を注文しようとしたり、初めて IAM 資格証明を作成しようとするときに、エンジンの構成が必要だというメッセージが表示されます。
シークレットを登録してみる
Secrets Managerインスタンスの作成
IBM Cloud コンソールで、左上の検索ボックスより「secrets」を入力し、"Secrets Manager"を選択します。
必要項目を入力し、"Create"をクリックすると作成されます。
シークレット・グループの作成
IBM Cloud コンソールで、左上のハンバーガーメニューより「リソース・リスト」をクリック、サービスのリストからSecrets Manager のインスタンスを選択します。
「シークレット・グループ」 タブをクリックし、「作成」 をクリックします。
名前の入力し、「作成」 をクリックすると作成されます。
シークレット・グループへの登録
Secrets Managerインスタンスページより、「シークレット・グループ」 タブをクリックすると先ほど作成したシークレット・グループが表示されます。
先ほど作成したシークレット・グループをクリックし 「Manage access」 をクリックします。
アクセスグループを選択し、対象と権限を設定し、「Add」 をクリックします。
同様に追加したいアクセスグループを全て追加したのち、「review」 をクリックすると対象ユーザーがアサインされます。
シークレットの作成
Secrets Managerインスタンスページより、「シークレット」 タブをクリックし、「追加」 をクリックします。
対象のシークレット種別を選択します。(今回はUser Credentialsを選択します)
シークレット名を入力、シークレット・グループを選択します。
管理したいusernameとpasswordを入力します。
完了すると下記画像のような呼び出し方法が表示され、登録が完了しました。(こちらは後からでも確認できます)
シークレットを呼び出してみる
先ほど表示されていたCLIをコピペし、登録したシークレットを取得してみます。
# ibmcloudコマンドでログイン
$ ibmcloud login -apikey xxxxxxxxxxxxxxxx -r jp-tok
API endpoint: https://cloud.ibm.com
Authenticating...
OK
...
# secrets manager プラグインをインストール
$ ibmcloud plugin install secrets-manager
Looking up 'secrets-manager' from repository 'IBM Cloud'...
Plug-in 'secrets-manager[sm] 0.1.19' found in repository 'IBM Cloud'
Attempting to download the binary file...
11.11 MiB / 11.11 MiB [============================================] 100.00% 2s
11648192 bytes downloaded
Installing binary...
OK
Plug-in 'secrets-manager 0.1.19' was successfully installed into /Users/jp419713/.bluemix/plugins/secrets-manager. Use 'ibmcloud plugin show secrets-manager' to show its details.
# 登録したパスワードを取得
$ ibmcloud secrets-manager secret --secret-type "username_password" --id "xxxxxxxxxxxxxxxx" --service-url https://xxxxxxxxxxxxxxxx.us-south.secrets-manager.appdomain.cloud
...
name test-user-credentials
id xxxxxxxxxxxxxxxx
secret_type username_password
secret_group_id xxxxxxxxxxxxxxxx
state_description Active
description None
labels None
expiration_date None
secret_data password="12345678"
username="testuser"
$
取得できました!!