设置 X.509 身份验证
X. 509客户端证书为数据库用户访问权限对项目中数据库部署的访问权限。 您可以使用Atlas Kubernetes Operator为 AtlasProject
自定义资源和AtlasDatabaseUser
自定义资源启用X. 509身份验证。
X. 509身份验证选项包括 Atlas 托管的 X. 509身份验证和自管理 X. 509身份验证。 要了解有关自管理 X. 509身份验证的更多信息,请参阅设置自管理 X. 509身份验证。
要设置 X.509 身份验证:
生成 X.509 证书。
配置
AtlasProject
自定义资源以使用该证书。配置
AtlasDatabaseUser
自定义资源以使用 Atlas 托管或自管理的 X.509 身份验证。
先决条件
注意
要使用自管理的 X.509 证书,您必须拥有公钥基础架构才能与 MongoDB Atlas 集成。
您需要以下公共 API 密钥、私有 API 密钥和组织 ID 信息, 配置 Atlas Kubernetes Operator 对 Atlas 的访问权限。
如果您希望Atlas Kubernetes Operator创建新的Atlas项目,请为组织授予编程访问权限。如果您的组织需要Atlas Administration API的IP访问列表,您还必须配置API访问权限列表。
重要
您必须为 API 密钥分配 Organization Project Creator组织角色或更高级别的角色。
如果要使用现有Atlas项目,请从项目添加项目访问权限。如果您的组织需要Atlas Administration API的IP访问列表,您还必须配置API访问权限列表。
重要
您必须为 API 密钥分配 Project Owner 项目角色。
要了解更多信息,请参阅配置对 Atlas 的访问权限。
使用cert-manager或create_X生成 X. 509证书。 509 .go 脚本。
使用 cert-经理 生成 X.509 证书
使用509 cert-manager 生成 X. 证书 ,执行以下步骤:
安装证书经理。
要安装 cert-manager,请参阅 cert-manager 安装文档 。
创建证书。
要创建证书,请参阅 cert-manager 使用文档。
要了解更多信息,请参阅 示例。
使用自定义脚本生成 X.509 证书
使用 create_X509 生成 X. 证书。 .go509脚本,执行以下步骤:
运行自定义脚本。
运行 create_X.509 .go脚本:
go run scripts/create_x509.go --path={pem-file-path}
示例:
go run scripts/create_x509.go --path=tmp/x509/
将证书添加到密钥中。
kubectl create secret generic {secret-name} --from-file={pem-file-directory}
kubectl label secret {secret-name} atlas.mongodb.com/type=credentials
示例:
kubectl create secret generic my-x509-cert --from-file=./tmp/x509/cert.pem
kubectl label secret my-x509-cert atlas.mongodb.com/type=credentials
步骤
配置项目以使用该证书。
指定 密钥 在spec.x509CertRef.name
AtlasProject
自定义资源 的 参数内。
示例:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Project projectIpAccessList: - ipAddress: "192.0.2.15" comment: "IP address for Application Server A" - cidrBlock: "203.0.113.0/24" comment: "CIDR block for Application Servers B - D" x509CertRef: name: my-x509-cert EOF
添加使用 X.509 身份验证的数据库用户。
为AtlasDatabaseUser
自定义资源指定x509Type
参数。
此参数接受:
无 | 不使用 X.509 身份验证的用户。 |
托管 | 使用 Atlas 托管的 X.509 的用户。 您必须为 |
客户 | 使用自管理 X. 509的用户。 使用此 您必须为 |
要了解有关 API提供的配置参数的详情,请参阅 Atlas数据库用户 API。
示例:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDatabaseUser metadata: name: my-database-user spec: username: CN=my-x509-authenticated-user,OU=organizationalunit,O=organization databaseName: "\$external" x509Type: "CUSTOMER" roles: - roleName: "readWriteAnyDatabase" databaseName: "admin" projectRef: name: my-project EOF