Hashicorp Vault認証とスプリングクラウドとスプリングブート
8669 ワード
この記事ではHashicorp Vaultのセットアップと使用方法について説明します.Vaultサポート複数authentication methods , 本稿ではこれら2つの方法について議論する トークンベース認証 AppRole authentication
Spring Boot 2.4.X 春の雲のVaultの設定 ジャバ11 Vaultのセットアップ-スタンドアロン
移動するhttp://127.0.0.1:8200/ui/vault/secrets をクリックし、'秘密のエンジンを有効にし'を選択し'一般的な' kv 'を選択
エンジンを有効にする
2 .パスフィールドの次の画面で、'秘密'または' vaultdemo 'を入力します(または、任意の名前を選択します)
3 .メイン画面へhttp://127.0.0.1:8200/ui/vault/secrets を選択し、vaultDempエンジンを選択して新しい秘密を作成します.それはフォーマットでなければなりません/.
へhttp://localhost:8200/ui/vault/policies/acl という名前のACLポリシーを作成します
スプリングブートプロジェクトの設定
移動するhttp://127.0.0.1:8200/ui/vault/access をクリックして'新しいメソッドを有効にする'を選択して'承認'
承認認証の有効化
2 .プロジェクトの新しいアプリケーションロールを作成する
クローンthis project とMavenを使用してビルドします.必ず合格する
Javaコマンドでプロジェクトを実行します.これは前のステップからプロファイルを使用してプロジェクトを起動する必要があります 移動するhttp://localhost:8081/api/v1/book/list Vaultから取得した資格情報をデータベースから取得した書籍の一覧を見るには コードアップロードGithub 参考のために.ハッピーコーディング
Update: Starting with Spring Boot 2.4.x, spring boot changed the way config files are processed. Updated the article to reflect the same.
技術
Vaultのセットアップ-スタンドアロン
1 . hashicorpvaultというディレクトリを作成し、設定ファイルをすべて保存する
ダウンロードVaultライブラリからVault そして、PATH
Vaultコマンドを自動補完できるように、次のコマンドを実行します
$ vault -autocomplete-install
4 . createconfig.hcl
ディレクトリ内のファイル
storage “consul” {
address = “127.0.0.1:8500”
path = “vault/”
}
ui = true
listener “tcp” {
address = “127.0.0.1:8200”
tls\_disable = 1
}
からダウンロードしますhttps://www.consul.io/downloads.html そして、PATH
次のコマンドを実行します$ consul agent -dev
7 .新しい端末を開き、次のコマンドを実行してVaultを起動します$ vault server -config=<path_to_file>/config.hcl
もう一つのターミナルを開き、以下のコマンドを実行します$ export VAULT_ADDR=http://127.0.0.1:8200
次のコマンドでvaultを初期化し、キーをどこか安全にコピーします
$ vault operator init
Unseal Key 1: E4GnjX+VP9G50uWQNcwpCflzGAMKGR38BbQywgq4I6L8
Unseal Key 2: PYMxcCOswEYMNz7N6UW53Up6nu6y+SjAPwTJOTtkju3d
Unseal Key 3: yuJ5cSxC7tSBR5mMVJ/WJ9bfhhfGb+uwWw9FQR0JKILh
Unseal Key 4: 0vdvEFHM9PHEGMctJrl2ylHqoKQK8DLkfMU6ntmDz6jv
Unseal Key 5: cI8yglWJX+jPf/yQG7Sg6SPWzy0WyrBPvaFTOAYkPJTx
Initial Root Token: 62421926–81b9-b202–86f8–8850176c0cf3
10 .次のコマンドでVaultを開封しましょう.この3回を実行してください、各々の時間はステップ9から異なるキーを入力します$ vault operator unseal
11 . goにhttp://localhost:8200/ui/ Vault UIを見るには
秘密エンジン
$ vault -autocomplete-install
storage “consul” {
address = “127.0.0.1:8500”
path = “vault/”
}
ui = true
listener “tcp” {
address = “127.0.0.1:8200”
tls\_disable = 1
}
$ vault operator init
Unseal Key 1: E4GnjX+VP9G50uWQNcwpCflzGAMKGR38BbQywgq4I6L8
Unseal Key 2: PYMxcCOswEYMNz7N6UW53Up6nu6y+SjAPwTJOTtkju3d
Unseal Key 3: yuJ5cSxC7tSBR5mMVJ/WJ9bfhhfGb+uwWw9FQR0JKILh
Unseal Key 4: 0vdvEFHM9PHEGMctJrl2ylHqoKQK8DLkfMU6ntmDz6jv
Unseal Key 5: cI8yglWJX+jPf/yQG7Sg6SPWzy0WyrBPvaFTOAYkPJTx
Initial Root Token: 62421926–81b9-b202–86f8–8850176c0cf3
エンジンを有効にする
2 .パスフィールドの次の画面で、'秘密'または' vaultdemo 'を入力します(または、任意の名前を選択します)
3 .メイン画面へhttp://127.0.0.1:8200/ui/vault/secrets を選択し、vaultDempエンジンを選択して新しい秘密を作成します.それはフォーマットでなければなりません/.
pres/dev
pres/test
pres/prod
4 .アプリケーション名もフォーマット/Ex: vaultdemo/app/pres/dev
5 . Create新しいバージョンをクリックし、次のパスワードを入力しますDev: username=root password=bcmc1234 url=”jdbc:mysql://localhost:3306/bookstore_dev”
Test: username=sa password=”” url=”jdbc:h2:mem:bookstore_test”
Prod: username=root password=bcmc1234 url=”jdbc:mysql://localhost:3306/bookstore_prod”
へhttp://localhost:8200/ui/vault/policies/acl という名前のACLポリシーを作成します
vault-demo-policy
それは私たちの秘密エンジンへのアクセスを制御します(後の手順で作成されます)path “vaultdemo/pres/\*” {
capabilities = \[“read”,”create”,”update”,"list"\]
}
スプリングブートプロジェクトの設定
プロジェクトを起動するにはapplication.yml
以下の内容によるファイル
spring:
application:
name: pres
cloud:
vault:
authentication: TOKEN
token: ${token}
scheme: http
host: localhost
port: 8200
kv:
enabled: true
backend: vaultdemo
config:
import: vault://secret/app/pres/
7 . Linuxマシン環境変数にトークンをエクスポートするには、次の構文を使用します$ export VAULT_TOKEN=<Your token>
7 .春はブートストラップを使用します.YLLファイルは、コンテキストを初期化する前に、Springプロファイルによって必要なVault設定とキー値のペアを読み込みます.${ VaultLagトークン}値はマシン環境変数から取得されます.
8 . include属性内のすべてのプロファイルを含めるようにしてください.これは、コンテキストを初期化する前に、それらのプロファイルをロードするように
9 .アプリケーションを作成します.Vaultからのキーはここで一致するはずです.e ${ username }、${ password }、${ url }
\## Server Properties
server:
port: 8081
spring:
config:
import: vault://secret/app/pres/dev
activate:
on-profile: "dev"
datasource:
username: ${username}
password: ${password}
url: ${url}
10 .アプリケーションの作成テストテストとprod環境のためのyml configファイル
11 . createmaven profiles インポム.プロファイルをアクティブにするXML.参照pom.xml 参考に
[
パヴァンジャダ/ハシコルプヴォルト春
このとき、そのアクションは実行できません。別のタブまたはウィンドウに署名しました。あなたは別のタブで署名したり…。
ギタブ.コム
(https://github.com/pavankjadda/HashiCorpVault-SpringCloud/blob/7b3ce9cd4670e3f5298d7ec45f75ff9beec7fdc0/pom.xml#L75 )
\## Select profile
spring:
profiles:
active: @activatedProperties@
認証の承認
spring:
application:
name: pres
cloud:
vault:
authentication: TOKEN
token: ${token}
scheme: http
host: localhost
port: 8200
kv:
enabled: true
backend: vaultdemo
config:
import: vault://secret/app/pres/
\## Server Properties
server:
port: 8081
spring:
config:
import: vault://secret/app/pres/dev
activate:
on-profile: "dev"
datasource:
username: ${username}
password: ${password}
url: ${url}
\## Select profile
spring:
profiles:
active: @activatedProperties@
承認認証の有効化
2 .プロジェクトの新しいアプリケーションロールを作成する
$ vault write auth/approle/role/your-app-name-read \\secret\_id\_num\_uses=0 \\secret\_id\_ttl=0 \\token\_num\_uses=0 \\token\_ttl=10m \\token\_max\_ttl=10m \\policies=approle-your-app-name-read
ロールIDの再試行$ vault read auth/approle/role/your-app-name-read/role-id
4 .秘密のIDを取得する$ vault write -f auth/approle/role/your-app-name-read/secret-id
アプリケーションロール認証を使用するには、Spring Bootプロジェクトを構成します.アプリケーションの作成.YMLファイル**spring**:
**cloud**:
**vault**:
**authentication**: _APPROLE_ **app-role**:
**role-id**: ${**role-id**}
**secret-id**: ${**secret-id**}
**role**: pres-read
**app-role-path**: approle
**uri**: http://localhost:8200
**connection-timeout**: 5000
**read-timeout**: 15000
**kv**:
**enabled**: **true
backend**: vaultdemo
**application-name**: pres
**config**:
**import**: vault://secret/app/pres/
アプリケーションスタートアップ中にロールIDと秘密のIDを提供しますプロジェクトの構築と実行
クローンthis project とMavenを使用してビルドします.必ず合格する
-Ddev
または、Mavenコマンドに対するパラメータをテストします.これは、スプリングプロファイルIDを選択し、アプリケーションに渡す.YMLファイル$ mvn clean package -Dtest -DskipTests
Javaコマンドでプロジェクトを実行します.これは前のステップからプロファイルを使用してプロジェクトを起動する必要があります
java -jar target/vaultdemo-0.0.1.jar
Reference
この問題について(Hashicorp Vault認証とスプリングクラウドとスプリングブート), 我々は、より多くの情報をここで見つけました https://dev.to/pavankjadda/hashicorp-vault-authentication-with-spring-cloud-and-spring-boot-490bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol