25.5. Vault でのサービスシークレットの保存
このセクションでは、管理者が vault を使用してサービスシークレットを一元的にセキュアに保存する方法を説明します。サービスシークレットはサービスの公開鍵で暗号化されます。その後、サービスはドメイン内のマシン上の秘密鍵を使用してシークレットを取得します。シークレットにアクセスできるのは、サービスと管理者のみです。
このセクションでは、以下の手順について説明します。
本手順での以下の用語について説明します。
admin
は、サービスパスワードを管理する管理者です。http_password
は、管理者が作成したプライベートユーザー vault の名前です。password.txt
はサービスパスワードが含まれるファイルです。password_vault
は、サービス用に作成された vault です。Http/server.example.com
は、パスワードがアーカイブされるサービスです。service-public.pem
は、password_vault
に保存されているパスワードの暗号化に使用するサービスの公開鍵です。
25.5.1. サービスパスワードを保存するユーザー vault の作成
管理者が所有するユーザー vault を作成し、これを使用してサービスパスワードを保存します。Vault タイプは standard で、vault の内容にアクセスする際に管理者が認証する必要がないようにします。
- 管理者としてログインします。
$ kinit admin
- 標準ユーザー vault を作成します。
$ ipa vault-add http_password --type standard --------------------------- Added vault "http_password" --------------------------- Vault name: http_password Type: standard Owner users: admin Vault user: admin
- サービスパスワードを vault にアーカイブします。
$ ipa vault-archive http_password --in password.txt ---------------------------------------- Archived data into vault "http_password" ----------------------------------------
警告パスワードを vault にアーカイブしたら、システムからpassword.txt
を削除します。
25.5.2. ユーザー vault からサービスインスタンスへのサービスパスワードのプロビジョニング
サービス用に作成された非対称 vault を使用して、サービスインスタンスにサービスパスワードをプロビジョニングします。
- 管理者としてログインします。
$ kinit admin
- サービスインスタンスの公開鍵を取得します。たとえば、
openssl
ユーティリティーを使用する場合は以下を行います。service-private.pem
秘密鍵を生成します。$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
- 秘密鍵をもとに
service-public.pem
公開鍵を生成します。$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
- サービスインスタンス vault として非対称 vault を作成し、公開鍵を指定します。
$ ipa vault-add password_vault --service HTTP/server.example.com --type asymmetric --public-key-file service-public.pem ---------------------------- Added vault "password_vault" ---------------------------- Vault name: password_vault Type: asymmetric Public key: LS0tLS1C...S0tLS0tCg== Owner users: admin Vault service: HTTP/server.example.com@EXAMPLE.COM
vault にアーカイブされたパスワードはこの鍵で保護されます。 - 管理者のプライベート vault からサービスパスワードを取得してから、新しいサービス vault にアーカイブします。
$ ipa vault-retrieve http_password --out password.txt ----------------------------------------- Retrieved data from vault "http_password" -----------------------------------------
$ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt ----------------------------------- Archived data into vault "password_vault" -----------------------------------
これにより、サービスインスタンスの公開鍵でパスワードを暗号化します。警告パスワードを vault にアーカイブしたら、システムからpassword.txt
を削除します。
上記の手順を、パスワードを必要とする全サービスインスタンスで繰り返します。サービスインスタンスごとに新規の非対称 vault を作成します。
25.5.3. サービスインスタンスのサービスパスワードの取得
サービスインスタンスは、ローカルに保存されたサービスの秘密鍵を使用してサービス vault パスワードを取得できます。
- 管理者としてログインします。
$ kinit admin
- サービスの Kerberos チケットを取得します。
# kinit HTTP/server.example.com -k -t /etc/httpd/conf/ipa.keytab
- サービス vault パスワードを取得します。
$ ipa vault-retrieve password_vault --service HTTP/server.example.com --private-key-file service-private.pem --out password.txt ------------------------------------ Retrieved data from vault "password_vault" ------------------------------------
25.5.4. サービス vault パスワードの変更
サービスインスタンスが危険にさらされたら、サービス vault パスワードを変更して、新しいパスワードを侵害されていないサービスインスタンスにのみ再プロビジョニングして分離します。
- 管理者のユーザー vault に新しいパスワードをアーカイブします。
$ ipa vault-archive http_password --in new_password.txt ---------------------------------------- Archived data into vault "http_password" ----------------------------------------
これにより、vault に保存されている現在のパスワードが上書きされます。 - 不正アクセスされたインスタンスを除く、各サービスインスタンスに新しいパスワードを再プロビジョニングします。
- 管理者の vault から新しいパスワードを取得します。
$ ipa vault-retrieve http_password --out password.txt ----------------------------------------- Retrieved data from vault "http_password" -----------------------------------------
- 新しいパスワードをサービスインスタンス vault にアーカイブします。
$ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt ----------------------------------- Archived data into vault "password_vault" -----------------------------------
警告パスワードを vault にアーカイブしたら、システムからpassword.txt
を削除します。