怎样建一个可以支付的网站,淮安市建设监理协会网站,手机app制作入门教程,中国航空港建设总公司网站介绍
ack-secret-manager支持以Kubernetes Secret实例的形式向集群导入或同步KMS凭据信息#xff0c;确保您集群内的应用能够安全地访问敏感信息。通过该组件#xff0c;您可以实现密钥数据的自动更新#xff0c;使应用负载通过文件系统挂载指定Secret实例来使用凭据信息确保您集群内的应用能够安全地访问敏感信息。通过该组件您可以实现密钥数据的自动更新使应用负载通过文件系统挂载指定Secret实例来使用凭据信息同时帮助您解决负载应用和阿里云凭据管家交互的兼容性问题。
模块图(Modules Digram) 集成
ACK 即是Aliyun Kubernetes, 阿里云提供了若干版本的k8s云上集群这边测试选用ack-serverless版本。
假设你有一套ack(ali cloud k8s)集群一般来说我们的敏感数据会选用k8s secrets组件来存储。如下
apiVersion: v1
kind: Secret
metadata:name: my-secretnamespace: my-namespace
type: Opaque
data:xx_token: BASE64ENCODE Your Secret Value
xx_token 一般来说默认的加密是基于base64。但是这样的加密程度是远远不够的。几乎还是裸奔的存在。但是我们也可以依赖一些插件选择合适的加密算法进行加密来避免简单base64 encode。这是一种解决方案。
由于aliyun已经提供了一个密钥凭据管理的组件KMS。他在提供了加密存储的同时也对加解密的性能提供了SLA和Latency的保证。支持一些rotate的策略并且支持多个VPC账号的访问对于企业级应用来说是个不错的选择。
那么我们接下来就操作下如何在ack中集成kms让你的pod可以访问使用kms的凭据。
安装ack-secret-manager组件
手动方式 登录容器服务管理控制台在左侧导航栏选择集群。 在集群列表页面单击目标集群名称然后在左侧导航栏选择应用 Helm。 在Helm页面单击创建在Chart区域搜索并选中ack-secret-manager其他设置保持默认然后单击下一步。 根据弹出的页面提示确认组件将被安装在默认的kube-system命名空间中并以组件名称发布应用。如果您需要自定义应用名和命名空间请根据页面提示设置。 在参数配置页面选择Chart版本为最新版本并设置相应参数然后单击确定。 如需开启RRSA认证功能您需要将参数rrsa.enable设置为true。
创建成功后会自动跳转到目标集群的ack-secret-manager页面检查安装结果。若下图中所有资源创建成功则表明组件安装成功。 Helm安装ack-secret-manager helm 配置链接你的ack集群请自行查询helm 使用。简单来说是在kubectl之上封装了一层可以帮我们生成我们需要发布的yaml并且带有版本控制概念。
首先安装helm,然后下载ack-secret-manger的chart包 下载地址https://github.com/AliyunContainerService/ack-secret-manager/tree/master运行命令安装 helm install ./ack-secret-manager ack-secret-manager 配置组件认证信息RRSA
说明
安装ack-secret-manager时需要将参数rrsa.enable设置为true以启用RRSA功能。 在容器服务管理控制台开启集群的RRSA功能。具体操作请参见启用RRSA功能。 创建可信实体为身份提供商的RAM角色以供ack-secret-manager使用。 说明 阿里云账号主账号对账号中的资源具有完全管理权限您也可以在RAM中创建一个RAM用户授予AdministratorAccess权限充当账号管理员该管理员可以对账号下所有云资源进行管控操作。更多信息请参见创建RAM用户作为账号管理员。 使用阿里云账号主账号登录RAM控制台。 在左侧导航栏选择身份管理 角色。 在角色页面单击创建角色。 在创建角色页面选择可信实体类型为身份提供商然后单击下一步。 在配置角色页面配置如下角色信息后单击完成。 置项 描述 角色名称 自定义角色名称。 备注 选填有关该角色的备注信息。 身份提供商类型 OIDC。 选择身份提供商 ack-rrsa-cluster_id。其中cluster_id为您的集群ID。 限制条件 说明 如果您将ack-secret-manager安装在其他的命名空间请将kube-system替换为对应命名空间的名称。 oidc:iss保持默认。 oidc:aud选择sts.aliyuncs.com。 oidc:sub条件判定方式选择StringEquals值的格式为system:serviceaccount:namespace:serviceAccountName。 namespace应用所在的命名空间。 serviceAccountName服务账户名称。 根据测试应用的信息此处需要填入system:serviceaccount:kube-system:ack-secret-manager。 terraform 创建 关于terraform语法自行百度或者查阅官方文档。
# Role
resource alicloud_ram_role default {name role_namedocument EOF{Statement: [{Action: sts:AssumeRole,Condition: {StringEquals: {oidc:aud: [sts.aliyuncs.com],oidc:iss: https://oidc-ack-region.oss-regionID.aliyuncs.com/your-ack-cluster-id,oidc:sub: system:serviceaccount:your namespace:service account name}},Effect: Allow,Principal: {Federated: [oidc-provider-arn]}}],Version: 1}EOFdescription desc
}
创建自定义授权策略并为上一步创建的RAM角色授权。 创建ack-secret-manager导入KMS凭据时所需的权限策略。 {Action: [kms:GetSecretValue,kms:Decrypt],Resource: [*],Effect: Allow
} 使用terraform创建, 关于terraform语法自行百度或者查阅官方文档。 resource alicloud_ram_policy default {policy_name your policy namepolicy_document EOF{Version: 1,Statement: [{Action: [kms:GetSecretValue,kms:Decrypt],Resource: *,Effect: Allow}]}EOFdescription desc
} 为上一步创建的RAM角色授权。具体操作请参见为RAM角色授权。 创建自定义资源SecretStore关联对应的认证方式并部署。 使用以下内容替换相关字段后创建secretstore-rrsa.yaml文件。 1.{roleName}替换为步骤2中创建的RAM角色名称。 2.{clusterID}替换为您的集群ID。 3.{accountID}替换为同步KMS凭据的阿里云账号ID。
apiVersion: alibabacloud.com/v1alpha1
kind: SecretStore
metadata:name: scdemo-rrsa
spec:KMS:KMSAuth:oidcProviderARN: acs:ram::{accountID}:oidc-provider/ack-rrsa-{clusterID}ramRoleARN: acs:ram::{accountID}:role/{roleName}
执行以下命令部署SecretStore。
配置数据同步信息
认证信息配置完成后您需要通过自定义资源ExternalSecret来配置待访问的KMS凭据信息从而将KMS凭据导入到Kubernetes Secret。
创建自定义资源ExternalSecret并部署。 使用以下内容替换相关字段后创建external.yaml文件。 apiVersion: alibabacloud.com/v1alpha1
kind: ExternalSecret
metadata:name: esdemo
spec:data: # 无需特殊处理的数据源。- key: {KMS secret name}name: {Kubernetes secret key}versionStage: {KMS secret version stage}secretStoreRef:name: {secret store name}namespace: {secret store namespace} 2.执行以下命令部署ExternalSecret。 kubectl apply -f external.yaml执行以下命令查看集群中是否存在对应的Kubernetes Secret生成。
kubectl get secret esdemo查询存在Secret表明Secret同步成功。