私は非常に簡単なスプリング・ブート・アプリケーションを持っています。それはちょうどzuulリバースプロキシです。サービスごとにユーレカとパスのマッピングを介して当社のサービスを発見するための基本的な設定以外のセキュリティや何もありません。私はアクチュエータエンドポイントが公に公開されるのを防ぎたいと思っていますが、ヘルスチェックエンドポイントを私たちのELBに使用することを望んでいますが、それが認識しているすべてのサービスの健全性について報告したくありません。敏感である)。予想される動作を得るために設定する必要があるプロパティを特定しようとしている間、私は非常に予期しない動作を経験しています。スプリング・ブート・アクチュエータのエンドポイント構成が期待どおりに機能していないようです。
たとえば、プロパティーをendpoints.sensitive=true
に設定した場合、これはヘルスチェックエンドポイントのデフォルト値を機密として変更しません。これはドキュメンテーションが言っていることに反するようです。
同様に、あなたはまた、世界的に すべてのエンドポイントの「感受性」フラグを設定することもできます。既定では、機密フラグは エンドポイントの種類によって異なります(上記の表を参照)。デバッグで実行しているとき
endpoints.sensitive =真
endpoints.info.sensitive = falseを
実際には、私は見たことがない: が情報を除き、機密として例えば、すべてのエンドポイントをマークしますorg.springframework.boot.actuate.endpoint.EndpointProperties#isSensitive
が呼び出されます。
ヘルスエンドポイントを機密扱いにするには、明示的にプロパティーを設定する必要があります。奇妙なことに、この設定が提供されると、org.springframework.boot.actuate.endpoint.EndpointProperties#isSensitive
が呼び出されます。
これは素晴らしいことですが、私のヘルスチェックエンドポイントは現在UPまたはDOWNだけで報告されています。しかし、今では、ヘルスチェックエンドポイントを有効にするだけのエンドポイントにしたいと思っています。だから私はendpoints.enabled=false
とendpoints.health.enabled=true
健康を除いてすべてのエンドポイントを無効にする必要があります設定します。しかし、これはそうではないようです。私の場合、/routes
、/resume
、/pause
、/hystrix.stream
などを打つことができます。私はendpoints.enabled=false
ですべてのエンドポイントを無効にした後、endpoints.actuator.enabled=true
でアクチュエータエンドポイントを有効にして、アクチュエータエンドポイントにヒットし、エンドポイントが有効になったと報告したときにのみこれを判断することができました。
{
"links": [
{
"rel": "self",
"href": "http://localhost:9200/actuator"
},
{
"rel": "resume",
"href": "http://localhost:9200/resume"
},
{
"rel": "pause",
"href": "http://localhost:9200/pause"
},
{
"rel": "hystrix.stream",
"href": "http://localhost:9200/hystrix.stream"
},
{
"rel": "env",
"href": "http://localhost:9200/env"
},
{
"rel": "routes",
"href": "http://localhost:9200/routes"
},
{
"rel": "health",
"href": "http://localhost:9200/health"
},
{
"rel": "refresh",
"href": "http://localhost:9200/refresh"
},
{
"rel": "restart",
"href": "http://localhost:9200/restart"
}
]
}
明らかに有効にした2つのエンドポイントのみが表示されます。アクセスしようとしたときに、各エンドポイントが個別になりましアクチュエータのエンドポイントからそれらを除去するが、いないよう無効に
は{
"links": [
{
"rel": "self",
"href": "http://localhost:9200/actuator"
},
{
"rel": "health",
"href": "http://localhost:9200/health"
}
]
}
、私は改善され、「このエンドポイントが無効になっています」というメッセージが表示されます。しかし、私はroutes
や `hystrix.stream *エンドポイントを無効にすることはできないようですが、この機能を公開する設定がないようです。
これはすべて、私はこれが予想される動作か、これがバグかと疑問に思いますか?
は、このための2つのバグを作成しました。https://github.com/spring-projects/spring-boot/issues/7477およびhttps://github.com/spring-projects/spring-boot/issues/7476 – loesak