mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 02:08:13 +00:00 
			
		
		
		
	redact detailed errors from healthz and expose in default policy
This commit is contained in:
		| @@ -94,10 +94,10 @@ func ClusterRoles() []rbac.ClusterRole { | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			// a role which provides just enough power to discovery API versions for negotiation | ||||
| 			// a role which provides just enough power to determine if the server is ready and discover API versions for negotiation | ||||
| 			ObjectMeta: metav1.ObjectMeta{Name: "system:discovery"}, | ||||
| 			Rules: []rbac.PolicyRule{ | ||||
| 				rbac.NewRule("get").URLs("/version", "/swaggerapi", "/swaggerapi/*", "/api", "/api/*", "/apis", "/apis/*").RuleOrDie(), | ||||
| 				rbac.NewRule("get").URLs("/healthz", "/version", "/swaggerapi", "/swaggerapi/*", "/api", "/api/*", "/apis", "/apis/*").RuleOrDie(), | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
|   | ||||
| @@ -369,6 +369,7 @@ items: | ||||
|     - /api/* | ||||
|     - /apis | ||||
|     - /apis/* | ||||
|     - /healthz | ||||
|     - /swaggerapi | ||||
|     - /swaggerapi/* | ||||
|     - /version | ||||
|   | ||||
| @@ -96,9 +96,10 @@ func handleRootHealthz(checks ...HealthzChecker) http.HandlerFunc { | ||||
| 		failed := false | ||||
| 		var verboseOut bytes.Buffer | ||||
| 		for _, check := range checks { | ||||
| 			err := check.Check(r) | ||||
| 			if err != nil { | ||||
| 				fmt.Fprintf(&verboseOut, "[-]%v failed: %v\n", check.Name(), err) | ||||
| 			if check.Check(r) != nil { | ||||
| 				// don't include the error since this endpoint is public.  If someone wants more detail | ||||
| 				// they should have explicit permission to the detailed checks. | ||||
| 				fmt.Fprintf(&verboseOut, "[-]%v failed: reason withheld\n", check.Name()) | ||||
| 				failed = true | ||||
| 			} else { | ||||
| 				fmt.Fprintf(&verboseOut, "[+]%v ok\n", check.Name()) | ||||
|   | ||||
| @@ -51,10 +51,10 @@ func TestMulitipleChecks(t *testing.T) { | ||||
| 		{"/healthz?verbose", "[+]ping ok\nhealthz check passed\n", http.StatusOK, false}, | ||||
| 		{"/healthz/ping", "ok", http.StatusOK, false}, | ||||
| 		{"/healthz", "ok", http.StatusOK, false}, | ||||
| 		{"/healthz?verbose", "[+]ping ok\n[-]bad failed: this will fail\nhealthz check failed\n", http.StatusInternalServerError, true}, | ||||
| 		{"/healthz?verbose", "[+]ping ok\n[-]bad failed: reason withheld\nhealthz check failed\n", http.StatusInternalServerError, true}, | ||||
| 		{"/healthz/ping", "ok", http.StatusOK, true}, | ||||
| 		{"/healthz/bad", "internal server error: this will fail\n", http.StatusInternalServerError, true}, | ||||
| 		{"/healthz", "[+]ping ok\n[-]bad failed: this will fail\nhealthz check failed\n", http.StatusInternalServerError, true}, | ||||
| 		{"/healthz", "[+]ping ok\n[-]bad failed: reason withheld\nhealthz check failed\n", http.StatusInternalServerError, true}, | ||||
| 	} | ||||
|  | ||||
| 	for i, test := range tests { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 deads2k
					deads2k