CSM概要
CipehrTrust Secrets Management は、AkeylessのSaaSベースの第3世代のシークレット管理ソリューションです。
主な特徴
- SaaSベースのため、従来製品と比較し総コストを抑えることができます(70%削減の事例あり)
- エンタープライズ向けに設計された製品であり、マルチクラウド/オンプレミス混在の環境のシークレットを一元管理する事ができます
- 特許技術のDFCによりCloud Act法等でクラウド事業者にデータ開示要求があった場合でも、シークレットを開示されることはありません。(FIPS 140-2認定)
- Static Secret, Dynamic Secret(一時的なSecret)のサポート
製品HP
YouTube
- “エンタープライズ向けシークレット管理”とは?CipherTrust Secrets Management Powered by AKEYLESS のご紹介
- CipherTrust Secrets Management (サイファートラスト シークレット マネジメント)による、企業レベルでのシークレット一元管理によるセキュリティ強化とコスト削減
90日間の無償トライアル
"90 days Free Trail" にて、無料にてお試しいただけます。
目的
最短でCSMをセットアップし、シークレット管理が始められるまでの手順を確認します
参照ドキュメント
-
Thales Docs - CipherTrust Manager
-
Akeyless
-
CSM関連記事(Qiita)
手順
製品ドキュメントの High Level Integration Process に沿って解説します
Configure Secrets Managementの設定手順が複雑なため、Akeylessで "Configuration Tool"を提供しており、本書ではこちらを利用した手順を解説しています。
CipherTrust Manager の デプロイ
下記の記事を参考に、CiperTrust Manager のデプロイを行って下さい
(今回のCSM利用では"Trial Evaluation" のアクティベーションは必要ありません)
CipherTrust Managerへのログイン
CipherTrust Manager へ管理者"admin"でログインします
"Secrets Management"の"Tile"が表示されていることが確認できます。(赤枠)
初期状態では、Akeyless とのコンフィグレーションが完了していないため、グレーアウト表示され、まだ利用できません
"secrets-manager"サービスの有効化
(CM v2.17以降)
Admin Settings > Services を選択します。
"secrets-manager"サービスの"Enable"ボタンをクリックし、有効化を行います。
Akeyless アカウントの作成
ブラウザで https://(CipherTrust Manager ホスト名/IPアドレス)/akeyless-console/
へアクセスします
”Sign up"をクリックします
"Email"を入力、"End User License Agreement"及び"Privacy Policy"をご確認いただき、チェックボックスをクリック、"Let's Get Started"をクリックします
"Check your inbox"のメッセージが表示されます
メールボックスを確認します
メールボックスに Akeylessからのメールが送られていることが確認できます
"Activate Your Account"をクリックします
"Access ID"及び"Access Key"が作成されました
"Save to .CSV file"をクリックし、"Access ID"及び"Access Key"を保存します
AkeylessへのCM接続の設定
Configuration Tool のダウンロード
ご利用の環境向けの "Configration Tool" のダウンロードを行います
- Linux https://download.akeyless.io/Akeyless_Artifacts/Linux/CipherTrustSetup/
- Windows https://download.akeyless.io/Akeyless_Artifacts/Windows/CipherTrustSetup/
- Mac https://download.akeyless.io/Akeyless_Artifacts/MacOS/CipherTrustSetup/
(本記事では、以降 Windowsを例に記述します)
Configuration Tool の実行
Powershell を開きます
Configuration Tool を "-help"オプション付きで実行し、コンフィグレーションに必要なパラメータを確認します
PS C:\Users\Administrator\Downloads> .\CipherTrust_windows_v0.0.6.exe -help
Usage of C:\Users\Administrator\Downloads\CipherTrust_windows_v0.0.6.exe:
-akl-admin-access-id string
the Akeyless admin access id
-akl-admin-access-key string
the Akeyless admin access key
-akl-am-name string
the auth method name (default "SSO")
-akl-key-name string
the Akeyless default encryption key name
-akl-role-name string
the role name (default "SSO")
-cm-group string
limit Gateway admins to group (default "admin")
-cm-pass string
the CipherTrust password
-cm-rotate-key string
with rotate Auth Key (default "true")
-cm-url string
the CipherTrust url
-cm-user-name string
the CipherTrust user name
PS C:\Users\Administrator\Downloads>
パラメータ | 説明 | |
---|---|---|
-akl-admin-access-id | the Akeyless admin access id | 今回作成したAkeylessアカウントの Access ID |
-akl-admin-access-key | the Akeyless admin access key | 今回作成したAkeylessアカウントの Access Key |
-akl-am-name | the auth method name (default "SSO") | 省略 |
-akl-key-name | the Akeyless default encryption key name | 任意 "MY_ZK_DFC_KEY" |
-akl-role-name | the role name (default "SSO") | 省略 |
-cm-group | limit Gateway admins to group (default "admin") | 省略 |
-cm-pass | the CipherTrust password | CM管理者”admin"パスワード |
-cm-rotate-key | with rotate Auth Key (default "true") | 省略 |
-cm-url | the CipherTrust url | CM IPアドレス(ホスト名) |
-cm-user-name | the CipherTrust user name | CM管理者"admin" |
実行例
PS C:\Users\Administrator\Downloads> .\CipherTrust_windows_v0.0.6.exe -akl-admin-access-id p-n8dqv9o9risxam -akl-admin-access-key FJ8p6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXAWzs= -akl-key-name MY_ZK_DFC_KEY -cm-url https://35.78.106.180 -cm-user-name admin -cm-pass Thales123!
got cipher trust token,
rotate Auth Key
successfully list Auth Key
successfully got akeyless token
successfully create new JWT auth method with access-id p-p0ig45cy24pvom
successfully create role SSO
successfully create association role auth method SSO p-p0ig45cy24pvom
successfully create association role auth method admin p-p0ig45cy24pvom
successfully got Gateway-admin new api-key p-lfkgl1i3l09vam 4440YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXb/bNo=
successfully create a gateway connection 4c2ac794-1634-4d8d-9cfc-8833fcafdf03
successfully create a gateway configuration 6a4684ec-669a-47e7-bfd0-1e0f55e82f5c
restarting CipherTrust
| successfully restart 👍
successfully create protection key MY_ZK_DFC_KEY
successfully set default zero-knowledge protection key
successfully set gateway url
successfully set access permissions for gateway admin group
PS C:\Users\Administrator\Downloads>
Configuration Toolで生成された、”Gateway-admin"の Access ID と Access Keyは、Akeyless Gatewayの利用で必要になりますので、値を保存します。
シークレット管理操作
再度、CipherTrust Manager へ管理者"admin"でログインします
Akeyless とのコンフィグレーションが完了済みのため、Tileが正常表示されるようになりました。(赤枠)
"Secrets Management"のTileをクリックします
Akeyless Gateway コンソールが表示されることを確認します
以上で、Akeyless Gatewayのコンフィグレーションは完了しました
あらかじめ生成済みの Static Secret である"MyFirstSecret"をクリックすると、このSecretの各種情報が表示されます
"目"のアイコンをクリックすると、Secretの値"My First Secret Value"が確認できます
CLIの導入
Akeyless Gateway コンソールと同様に、CLIにて、Secretの値を確認ししてみます
Akeyless CLI のインストール
今回は Linuxを例に表記しております。その他の環境や、詳細についてはドキュメント "CLI" をご参照下さい
Akeyless CLIのダウンロードを行います
$ curl -o akeyless https://akeyless-cli.s3.us-east-2.amazonaws.com/cli/latest/production/cli-linux-amd64
ダウンロードしたファイルを実行し、初期設定を行います
今回はSignup時に生成したAkeylessアカウントの Access IDとAceess KeyをCLIでの認証に用います
$ chmod +x akeyless
$ ./akeyless
AKEYLESS-CLI, first use detected
For more info please visit: https://docs.akeyless.io/docs/cli
Enter Akeyless URL (Default: vault.akeyless.io)
Would you like to configure a profile? (Y/n)
Profile Name: (Default: default)
Access Type (enter for access_key):
1) access_key
2) aws_iam
3) azure_ad
4) saml
5) ldap
6) email/password
7) oidc
8) k8s
9) gcp
10) certificate
11) oci
1
Access ID: p-n8dqv9o9risxam
Access Key: ********************************************
The profile: default was successfully configured
Would you like to move 'akeyless' binary to: /home/ubuntu/.akeyless/bin/akeyless? (Y/n)
Please type your answer:
The cli was successfully moved to path: /home/ubuntu/.akeyless/bin/akeyless
Would you like to add '/home/ubuntu/.akeyless/bin' To user PATH environment variable? (Y/n)
Please type your answer:
Please run the following command to start using Akeyless CLI:
'source /home/ubuntu/.bashrc'
$ source /home/ubuntu/.bashrc
正常に動作することを確かめるテストを行います
下記のコマンドで、管理されている Secretのリストが表示されます
$ akeyless list-items
{
"items": [
{
"item_name": "/MY_ZK_DFC_KEY",
"item_id": 292643381,
"display_id": "l2o3ou3qa6Tm-r3ujw39t59lk",
"item_type": "AES256GCM",
"item_sub_type": "generic",
"item_metadata": "",
"item_tags": null,
"item_size": 32,
...
(省略)
...
"creation_date": "2024-07-09T04:02:36Z",
"modification_date": "2024-07-09T04:02:36Z",
"access_date_display": "2024-07-09T04Z",
"gateway_details": null
}
],
"next_page": "eyJpIjoiL2ZvbzEifQ=="
}
$
GUIと同様に、あらかじめ生成済みの Static Secret である"/MyFirstSecret"を取得します
$ akeyless get-secret-value --name /MyFirstSecret
My First Secret Value
"My First Secret Value"の値を確認することができました
Static Secretの作成
Akeyless Gateway コンソール
Static Secret の作成を行います
Items > New > "Static Secret' を選択します
Name に、"foo1", Value に"bar1"を入力し、"Finish"をクリックします
新しく生成された Static Secret "foo1"が確認できます
"Value"の項目の"目"のアイコンをクリックすると、Value "bar1"が確認できます
暗号化技術: "DFC" と "Zero Knowledge Encryption"
"MyFirstSecret"と、今回作成した"foo1"の2つの Secretが確認できます
アイコンを見ると、"foo1"には、緑のマークが付いており、"MyFirstSecret"には付いていません
これは、暗号化技術である"Zero Knowledge Encryption"を利用しているかどうかを指し、利用している場合、緑のマークが付きます
全てのSecretは、DFCという暗号化技術を用い保存されます。Secretはまず、"Protection Key"(暗号鍵)で暗号化されます
"Protection Key"は、DFCにより、フラグメントに分割され、AWS, GCP, Azureの各クラウドへ保存されます
CipherTrust Manager内に"Akeyless Gateway"が稼働しており、もう一つのフラグメント"Customer Fragment"を、"Akeyless Gateway"に保存することができます
この"Customer Flagment"を利用する技術を"Zero Knowledge Encrption"と呼びます
Secret "MyFirstSecret"の暗号化には、"Default"の”Protection Key"が利用されています
"Default"の”Protection Key"は、"Zero Knowledge Encription"を利用してらず、Customer FragmentはAkeyless Gatewayに保存されていません
一方、新規に Akeyless Gatewayコンソールから作成した Secret "foo1"の暗号化には、"MY_ZK_DFC_KEY"の”Protection Key"が利用されています
"MY_ZK_DFC_KEY"の”Protection Key"は、"Zero Knowledge Encription"を利用しており、Customer FragmentはAkeyless Gatewayに保存されています
このため、Akeyless Gatewayを用いないと、Secretを参照することができません
CLI操作
先ほど、作成した ”Zero Knowledge Encription”利用の"/foo1"をCLIで取得してみます
現状、 直接、Akeyless SaaSへ問い合わせを行っており、Customer Fragment を参照することができず失敗しています
$ akeyless get-secret-value --name /foo1
null
failed to get the value of the requested secrets: failed to obtain secret's encryption key, error: failed to extract derived key, error: customer fragment 6a4684ec-669a-47e7-bfd0-1e0f55e82f5c is required for this operation but not available
CipherTrust Manager内のAkeyless Gatewayを利用するように設定をおこないます
Akeyless CLI の Akeyless Gateway 利用設定
参照ドキュメント
hosts ファイルに CMホスト名の追加
/etc/hostsへ、CMのホスト名を登録します
"web.ciphertrustmanager.local"は、CMのディフォルト証明書で利用されています
今回はこれを利用します
<ciphertrust manager ipaddress> web.ciphertrustmanager.local
ksctl のインストール
CipherTrust Manager のCLIである ksctl のインストールをおこないます
$ curl -OLk https://web.ciphertrustmanager.local/downloads/ksctl_images.zip
$ unzip ksctl_images.zip
$ sudo cp ksctl-linux-amd64 /usr/local/bin/ksctl
フォルダ "$HOME/.ksctl"を作成し、コンフィグレーションファイル "config.yaml"を設定します
今回は "config_example.yaml"に対して、 LSCTL_PASSWORD, KSCTL_URL を変更しました
$ mkdir $HOME/.ksctl
$ cp config_example.yaml $HOME/.ksctl/config.yaml
$ cat $HOME/.ksctl/config.yaml
KSCTL_VERBOSITY: false
KSCTL_RESP: json
KSCTL_USERNAME: admin
KSCTL_PASSWORD: Thales123!
KSCTL_URL: https://web.ciphertrustmanager.local:443
KSCTL_JWT:
KSCTL_NOSSLVERIFY: true
KSCTL_TIMEOUT: 30
$
ksctl が正常にインストールできたか、確認を行います
$ ksctl version
$ ksctl --help
$ ksctl keys list
CipherTrust Manager の Web Interface の証明書ダウンロード
下記コマンドにて、Web Interface の証明書のダウンロードを行います
$ ksctl interfaces certificate get --name web --icertfile web-ciphertrustmanager-local.pem
必要に応じ、証明書(pemファイル)に含まれる証明書を確認します
$ openssl x509 -text -fingerprint -noout -in web-ciphertrustmanager-local.pem
Akeyless CLI 環境変数設定
.bachrcへ下記、環境変数の追加をおこないます
- AKEYLESS_TRUSTED_TLS_CERTIFICATE_FILE: Akeyless CLIで参照するweb証明書
- AKEYLESS_GATEWAY_URL: Akeyless GW URLの指定:
export AKEYLESS_TRUSTED_TLS_CERTIFICATE_FILE=~/web-ciphertrustmanager-local.pem
export AKEYLESS_GATEWAY_URL=https://web.ciphertrustmanager.local/akeyless-api/
.bashrc の再読込み
$ source .bashrc
再度、GUIにて作成した "/foo1"を取得します
Akeyless Gatewayを利用し、Customer Fragment を参照することができるようになったため、正常にSecretを取得できるようになりました
$ akeyless get-secret-value --name /foo1
bar1
What's Next?
- シークレット管理や操作方法詳細
- Akeyless の動画付きチュートリアルをご参照下さい
補足
-
Akyless とCSM機能の違い
- Akeyless の下記機能についてCSM未サポート
- Classic keys (CMにてサポート)
- KMIP (CM- KMIPにてサポート)
- KMS Cloud Manager (CCKMにてサポート)
- Transparent Data Encryption (CAKMにてサポート)
- Tokenization (CT-VL にてサポート)
- Secure Remote Access
- Akeyless Password Manager
- Akeyless の下記機能についてCSM未サポート