diff options
Diffstat (limited to 'custodia/kubernetes')
-rw-r--r-- | custodia/kubernetes/authz.py | 6 | ||||
-rw-r--r-- | custodia/kubernetes/node.py | 19 |
2 files changed, 17 insertions, 8 deletions
diff --git a/custodia/kubernetes/authz.py b/custodia/kubernetes/authz.py index 4342f6f..cb9c68d 100644 --- a/custodia/kubernetes/authz.py +++ b/custodia/kubernetes/authz.py @@ -36,7 +36,7 @@ class KubeAuthz(HTTPAuthorizer): trail = path[len(prefix) + 1:] (namespace, podname, secret) = trail.split('/', 2) - self.logger.debug("Checking if pod %s,%s has access to secret %s", + self.logger.debug("Checking if pod %s/%s has access to secret %s", namespace, podname, secret) try: @@ -52,6 +52,10 @@ class KubeAuthz(HTTPAuthorizer): request['client_id'], path) return False + self.logger.debug( + "Pod %s/%s runs on node %s with secret namespace %s.", + namespace, podname, node_id, secrets_namespace) + if node_id != request.get("remote_user"): self.logger.debug("Node authenticated as %s, but pod is believed " "to be running on %s", diff --git a/custodia/kubernetes/node.py b/custodia/kubernetes/node.py index 5d4f863..99f5d1b 100644 --- a/custodia/kubernetes/node.py +++ b/custodia/kubernetes/node.py @@ -38,7 +38,7 @@ class NodeAuth(HTTPAuthenticator): return None dockerid = self._pid2dockerid(int(creds['pid'])) if dockerid is None: - self.logger.debug("Didn't find docker ID for pid %s", creds['pid']) + self.logger.debug("Didn't find Docker ID for pid %s", creds['pid']) return None try: @@ -50,24 +50,29 @@ class NodeAuth(HTTPAuthenticator): self.logger.debug("Failed to query docker for [%s:%s]: %s", creds['pid'], dockerid, err) self.audit_svc_access(log.AUDIT_SVC_AUTH_FAIL, - request['client_id'], dockerid) + request['client_id'], dockerid) return False if data_id != dockerid: - self.logger.debug("Docker ID %s not found!", dockerid) + self.logger.debug("Docker ID %s not found for pid %s!", + dockerid, creds['pid']) self.audit_svc_access(log.AUDIT_SVC_AUTH_FAIL, - request['client_id'], dockerid) + request['client_id'], dockerid) return False podname = data_labels.get('io.kubernetes.pod.name') if podname is None: - self.logger.debug("Pod Name not found for Docker ID %s", dockerid) + self.logger.debug("Pod Name not found for Docker ID %s, pid %s", + dockerid, creds['pid']) self.audit_svc_access(log.AUDIT_SVC_AUTH_FAIL, - request['client_id'], dockerid) + request['client_id'], dockerid) return False + self.logger.debug("PID %s runs in Docker container %s of pod '%s'", + creds['pid'], dockerid, podname) + self.audit_svc_access(log.AUDIT_SVC_AUTH_PASS, - request['client_id'], dockerid) + request['client_id'], dockerid) request['client_id'] = dockerid request['remote_user'] = podname return True |