Kubernetes 简单认证
Kubernetes simple authentication
我在托管在 DigitalOcean 上的 coreOS 集群上使用 Kubernetes。
并使用 this repo 进行设置。我使用以下行启动了 apiserver:
/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \
--insecure-bind-address=0.0.0.0 --insecure-port=8080 \
--secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \
--logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \
--service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0
问题是它接受任何人的请求!我希望能够提供简单的 user/password 身份验证。我一直在阅读 this and this 并且似乎我必须做类似下面的事情,但是我不能承受长时间关闭集群,所以我需要你们的帮助。顺便说一句,我的 pods 不会创建另一个 pods,所以我只需要几个用户,例如 1/2 用于开发人员和 1 用于 CI。
我正在考虑做一些事情,比如在需要时包含授权模式和授权策略文件标志,并使不安全绑定地址 localhost 仅在本地可用。我错过了什么?
/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \
--authorization-mode=ABAC --authorization-policy-file=/access.json \
--insecure-bind-address=127.0.0.1 --insecure-port=8080 \
--secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \
--logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \
--service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0
###/access.json
{"user":"admin"}
{"user":"wercker"}
{"user":"dev1"}
{"user":"dev2"}
但是密码在哪里?我实际上如何使用 kubectl 和 curl 或 httpie 发出请求?
如果您希望您的用户使用 HTTP Basic Auth(用户:密码)进行身份验证,您可以添加:
--basic-auth-file=/basic_auth.csv
到你的 kube-apiserver 命令行,文件的每一行都应该是 password, user-name, user-id
。例如:
@dm1nP@ss,admin,admin
w3rck3rP@ss,wercker,wercker
etc...
如果您更愿意使用访问令牌(HTTP 身份验证:Bearer),您可以指定:
--token-auth-file=/known-tokens.csv
每行应 token,user-name,user-id[,optional groups]
。例如:
@dm1nT0k3n,admin,admin,adminGroup,devGroup
w3rck3rT0k3n,wercker,wercker,devGroup
etc...
有关详细信息,请查看 Authentication docs. Also checkout example_policy_file.jsonl 示例 ABAC 文件。
我在托管在 DigitalOcean 上的 coreOS 集群上使用 Kubernetes。 并使用 this repo 进行设置。我使用以下行启动了 apiserver:
/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \
--insecure-bind-address=0.0.0.0 --insecure-port=8080 \
--secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \
--logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \
--service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0
问题是它接受任何人的请求!我希望能够提供简单的 user/password 身份验证。我一直在阅读 this and this 并且似乎我必须做类似下面的事情,但是我不能承受长时间关闭集群,所以我需要你们的帮助。顺便说一句,我的 pods 不会创建另一个 pods,所以我只需要几个用户,例如 1/2 用于开发人员和 1 用于 CI。
我正在考虑做一些事情,比如在需要时包含授权模式和授权策略文件标志,并使不安全绑定地址 localhost 仅在本地可用。我错过了什么?
/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \
--authorization-mode=ABAC --authorization-policy-file=/access.json \
--insecure-bind-address=127.0.0.1 --insecure-port=8080 \
--secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \
--logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \
--service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0
###/access.json
{"user":"admin"}
{"user":"wercker"}
{"user":"dev1"}
{"user":"dev2"}
但是密码在哪里?我实际上如何使用 kubectl 和 curl 或 httpie 发出请求?
如果您希望您的用户使用 HTTP Basic Auth(用户:密码)进行身份验证,您可以添加:
--basic-auth-file=/basic_auth.csv
到你的 kube-apiserver 命令行,文件的每一行都应该是 password, user-name, user-id
。例如:
@dm1nP@ss,admin,admin
w3rck3rP@ss,wercker,wercker
etc...
如果您更愿意使用访问令牌(HTTP 身份验证:Bearer),您可以指定:
--token-auth-file=/known-tokens.csv
每行应 token,user-name,user-id[,optional groups]
。例如:
@dm1nT0k3n,admin,admin,adminGroup,devGroup
w3rck3rT0k3n,wercker,wercker,devGroup
etc...
有关详细信息,请查看 Authentication docs. Also checkout example_policy_file.jsonl 示例 ABAC 文件。