1

私はSpring Cloud Config Serverを使用してクライアントアプリケーションの設定を提供しています。秘密設定を容易にするために、私はHashCorp Vaultをバックエンドとして使用しています。残りの設定についてはGITリポジトリを使用しています。ですから、コンポジットモードで設定サーバを設定しました。以下の私の設定サーバーbootstrap.ymlを参照してください。 -Spring Cloud Config(Vaultバックエンド)が早すぎる

server: 
    port: 8888 

spring: 
    profiles: 
     active: local, git, vault 

    application: 
     name: my-domain-configuration-server 

    cloud: 
     config: 
      server: 
       git: 
        uri: https://mygit/my-domain-configuration 
        order: 1 
       vault: 
        order: 2 
        host: vault.mydomain.com 
        port: 8200 
        scheme: https 
        backend: mymount/generic 

これはすべて期待どおりです。しかし、私が使用しているトークンはVaultの認証ポリシーで保護されています。以下を参照してください: -

{ 
    "rules": "path "mymount/generic/myapp-app,local" { 
        policy = "read" 
       } 

       path "mymount/generic/myapp-app,local/*" { 
        policy = "read" 
       } 

       path "mymount/generic/myapp-app" { 
        policy = "read" 
       } 

       path "mymount/generic/myapp-app/*" { 
        policy = "read" 
       } 

       path "mymount/generic/application,local" { 
        policy = "read" 
       } 

       path "mymount/generic/application,local/*" { 
        policy = "read" 
       } 

       path "mymount/generic/application" { 
        policy = "read" 
       } 

       path "mymount/generic/application/*" { 
        policy = "read" 
       }" 
} 

私の問題は、これらすべてのスコープに秘密を保存していないことです。 mymount/generic/myapp-app,localから1つの秘密を読み取るためにトークンを認可できるように、これらのパスをすべて指定する必要があります。 VaultEnvironmentRepository.read()メソッドが403 HTTPステータスコード(禁止されている)を返し、VaultExceptionをスローします。これにより、GITベースの設定を含むアプリケーションの設定を完全に取得できなくなります。これは、クライアントアプリケーションが複数のSpringプロファイルを持ち、設定項目を取得することとは関係がないため、非常に制限されています。問題は、configサーバーが、クライアントが提供するすべてのアクティブなプロファイルの構成を取得しようとすることです。

構成サーバーでフォールトトレランスまたは可用性を有効にする方法があるため、VaultEnvironmentRepositoryは中止せず、実際に返される構成を返します。

答えて

0

あなたは絶対にローカルプロファイルが必要ですか?設定サーバーで 'vault'と 'git'プロファイルだけで取得できず、各Spring Bootアプリケーションで 'default'プロファイルを使用できますか?

あなたは上記の提案を使用する場合は、あなたがあなたのルールで必要があると思いたった2つの経路(.hcl)ファイルは、次のとおりです。

path "mymount/generic/application" { 
    capabilities = ["read", "list"] 
} 

path "mymount/generic/myapp-app" { 
    capabilities = ["read", "list"] 
} 

これは、あなたがしていることを前提としてい

vault write mymount/generic/myapp-app 

なく

に設定を書き込み
vault write mymount/generic/myapp-app,local 

または類似物。

+0

私の問題はVaultに設定されていないプロファイルを追加してもまだ問題があることを示しています。 Vaultで設定されていないプロファイルを使用できるようにするメカニズムが必要です。 「ローカル」プロファイルはここでの説明のためだけに使用されています。 – Codesnooper

関連する問題