详情页标题前

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技

详情页1

ExternalSecretOperator 可以帮助您将统一存储和管理在 腾讯云凭据管理系统(SSM)中的密钥凭据,以 K8S 原生 Secret 对象的形式导入到集群中,并实现密钥数据的自动同步,实现由 SSM 来统一存储和管理密钥的生命周期。

限制条件

使用 ExternalSecrets 组件需要 Kubernetes 版本大于等于1.19。操作系统镜像支持 x86 架构。

启用外部密钥访问能力

安装扩展组件

1. 登录 容器服务控制台。2. 为集群安装 ExternalSecrets(外部密钥访问组件)组件。如果您还没有创建集群,可以在创建集群的时候安装 ExternalSecrets 组件。详情请参见 通过集群创建页安装。如果您需要给已创建好的集群开启外部密钥访问能力,请在组件管理中安装 ExternalSecrets 组件。详情请参见 通过组件管理页安装。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


3. 在组件管理页面查看组件状态。如组件状态为“成功”,代表组件部署完成。如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技



使用方式

方式一:通过 AKSK 授权

步骤1:通过 AKSK 授权方式配置认证信息

1. 登录 腾讯云访问管理控制台,选择左侧导航中的策略。2. 进入策略页面,单击新建自定义策略 > 按策略语法创建。3.按策略语法创建页面,选择空白模板,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


4. 单击下一步,进入编辑策略页面,在策略内容编辑框中添加以下内容:

{    "statement": [        {            "action": [                "ssm:GetSecretValue"            ],            "effect": "allow",            "resource": [                "*"            ]        }    ],    "version": "2.0"}

5. 单击完成即可添加策略。6.策略页面查看已创建的自定义策略,选择自定义策略 > 关联用户/组/角色,如下图所示: 

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


关联用户/组/角色页面选择需要绑定的用户,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


7. 单击确定

步骤2:组件使用说明

该组件涉及两种自定义资源(CRD):SecretStore 用于存放访问凭据,ExternalSecret 用于指定 SecretStore 并存放需要同步的凭据基础信息。通过这种方式,权限和数据得到分离,提高了使用的灵活性。在 SSM 凭据管理系统中,您需要添加以下凭据:

SecretName: hello-testSecretData: {"name":"jack","password":"123"}VersionId: v1

请参见 腾讯云凭据管理系统文档 以获取详细的创建凭据流程。注意:以下 secret、SecretStore、ExternalSecret 均在 default 命名空间中。1. 创建 secret。您可以使用以下命令创建 secret:

echo -n 'KEYID' > ./accessKeyIdecho -n 'SECRETKEY' > ./accessKeySecretkubectl create secret generic tencent-credentials --from-file=./accessKeyId --from-file=./accessKeySecret

说明:密钥可前往 访问管理 进行获取。2. 创建 SecretStore。您可以将以下内容保存到 my-secretstore.yaml 文件中:

apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: my-secretstore
spec:
  provider:
    tencent:
      regionID: ap-guangzhou
      auth:
        secretRef:
          accessKeyIDSecretRef:
            name: tencent-credentials
            key: accessKeyId
          accessKeySecretSecretRef:
            name: tencent-credentials
            key: accessKeySecret

3. 创建 ExternalSecret。您可以将以下内容保存到 my-externalsecret.yaml 文件中:

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: my-externalsecret
spec:
  refreshInterval: 1m
  secretStoreRef:
    kind: SecretStore
    name: my-secretstore
  target:
    name: my-secret-key-to-be-created
    creationPolicy: Owner
  data:
    - secretKey: secret-key-to-be-managed
      remoteRef:
        key: hello-test
        version: v1
        # option
        property: password

4. 部署示例,请执行以下命令:

kubectl apply -f my-secretstore.yaml
kubectl apply -f my-externalsecret.yaml

5. 使用获取的凭据。您可以将以下内容保存到 my-pod.yaml 文件中:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: busybox
      command:
        - /bin/sh
        - -c
        - 'echo "Secret value: ${SECRET_KEY_TO_BE_MANAGED}"'
      env:
        - name: SECRET_KEY_TO_BE_MANAGED
          valueFrom:
            secretKeyRef:
              name: my-secret-key-to-be-created
              key: secret-key-to-be-managed
  restartPolicy: Never

然后,使用以下命令部署 Pod 资源:

kubectl apply -f my-pod.yaml

最后,使用以下命令查看获取的凭据:

kubectl logs my-pod

您将看到获取的凭据信息:

# ExternalSecret中获取的凭据信息如下所示。
Secret value: 123

方式二:通过 AKSK 与角色扮演授权

步骤1:创建获取 SSM 凭据的策略

1. 登录 腾讯云访问管理控制台,选择左侧导航中的策略。2. 进入策略页面,单击新建自定义策略 > 按策略语法创建。3.按策略语法创建页面,选择空白模板,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


4. 单击下一步,进入编辑策略页面,在策略内容编辑框中添加以下内容:

{    "statement": [        {            "action": [                "ssm:GetSecretValue"            ],            "effect": "allow",            "resource": [                "*"            ]        }    ],    "version": "2.0"}

5. 单击完成即可添加策略。

步骤2:为子账号赋予扮演角色策略

1. 登录 腾讯云访问管理控制台,选择左侧导航中的用户 > 用户列表。2.用户列表页面,单击新建用户。新建用户流程详情请参见 新建子用户。3. 为创建的子用户赋予扮演角色的策略。详情请参见 为子账号赋予扮演角色策略。

步骤3:为创建的子用户赋予访问 SSM 凭据的策略

1.策略页面查看已创建的自定义策略,选择自定义策略 > 关联用户/组/角色,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技

2.关联用户/组/角色页面选择需要绑定的子用户,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


3. 单击确定

步骤4:组件使用说明

该组件涉及两种自定义资源(CRD):SecretStore 用于存放访问凭据,ExternalSecret 用于指定 SecretStore 并存放需要同步的凭据基础信息。通过这种方式,权限和数据得到分离,提高了使用的灵活性。在 SSM 凭据管理系统中,您需要添加以下凭据:

SecretName: hello-testSecretData: {"name":"jack","password":"123"}VersionId: v1

请参见 腾讯云凭据管理系统文档 以获取详细的创建凭据流程。注意:以下 secret、SecretStore、ExternalSecret 均在 default 命名空间中。1. 创建 secret。您可以使用以下命令创建 secret:

echo -n 'KEYID' > ./accessKeyIdecho -n 'SECRETKEY' > ./accessKeySecretkubectl create secret generic tencent-credentials --from-file=./accessKeyId --from-file=./accessKeySecret

说明:密钥可前往 访问管理 进行获取。2. 创建 SecretStore。您可以将以下内容保存到 my-secretstore.yaml 文件中:

apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: secretstore-assumerole
spec:
  provider:
    tencent:
      regionID: ap-guangzhou
      role: "qcs::cam::uin/12345:roleName/test-assume-role"
      auth:
        secretRef:
          accessKeyIDSecretRef:
            name: tencent-credentials
            key: accessKeyId
          accessKeySecretSecretRef:
            name: tencent-credentials
            key: accessKeySecret

说明:role 字段在 步骤2 中获取。3. 创建 ExternalSecret。您可以将以下内容保存到 my-externalsecret.yaml 文件中:

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: external-secret-assumerole
spec:
  refreshInterval: 1m
  secretStoreRef:
    kind: SecretStore
    name: secretstore-assumerole
  target:
    name: my-secret-key-to-be-created
    creationPolicy: Owner
  data:
    - secretKey: secret-key-to-be-managed
      remoteRef:
        key: hello-test
        version: v1
        property: password

4. 部署示例,请执行以下命令:

kubectl apply -f my-secretstore.yaml
kubectl apply -f my-externalsecret.yaml

5. 使用获取的凭据。您可以将以下内容保存到 my-pod.yaml 中:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: busybox
      command:
        - /bin/sh
        - -c
        - 'echo "Secret value: ${SECRET_KEY_TO_BE_MANAGED}"'
      env:
        - name: SECRET_KEY_TO_BE_MANAGED
          valueFrom:
            secretKeyRef:
              name: my-secret-key-to-be-created
              key: secret-key-to-be-managed
  restartPolicy: Never



然后,使用以下命令部署 Pod 资源:

kubectl apply -f my-pod.yaml

最后,使用以下命令查看获取的凭据:

kubectl logs my-pod

您将看到获取的凭据信息:

# ExternalSecret中获取的凭据信息如下所示。
Secret value: 123

方式三:通过 TKE OIDC 授权

步骤1:开启 OIDC 资源访问控制能力

1. 登录 容器服务控制台,选择左侧导航中的集群。2.集群管理页面,选择集群 ID,进入集群的基本信息页面。3. 在集群基本信息中,单击 ServiceAccountIssuerDiscovery 右侧的

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技

。如下图所示:说明:如果您需要体验 ServiceAccountIssuerDiscovery 功能,请 提交工单 进行申请。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


4. 进入修改 ServiceAccountIssuerDiscovery 相关参数页面,若系统提示您无法修改相关参数,请先进行服务授权。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


在角色管理页面,查看授权策略 QcloudAccessForTKERoleInOIDCConfig,单击同意授权。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


5. 授权完毕后,勾选“创建 CAM OIDC 提供商”和“创建webhook组件”,并填写客户端 ID,单击确定。如下图所示:说明客户端 ID 是选填参数,当不填写时,默认值是 “sts.cloud.tencent.com”,本文示例中创建 CAM OIDC 提供商采用默认值。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


6. 返回集群详情页,当 ServiceAccountIssuerDiscovery 可再次编辑时,表明本次开启 OIDC 资源访问控制结束。注意“service-account-issuer” 和 “service-account-jwks-uri” 参数值不允许编辑,采用默认规则。7. 进入修改 ServiceAccountIssuerDiscovery 相关参数页面,系统将提示“您创建的身份提供商已存在,前往查看”。单击前往查看。如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


8.集群信息 > 组件管理中,如在列表看到 pod-identity-webhook 组件状态是“成功”,即表示安装组件成功。如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技



步骤2:创建获取 SSM 凭据的策略

1. 登录 腾讯云访问管理控制台,选择左侧导航中的策略。2. 进入策略页面,单击新建自定义策略 > 按策略语法创建。3.按策略语法创建页面,选择“空白模板”,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


4. 单击下一步,进入编辑策略页面,在策略内容编辑框中添加以下内容:

{    "statement": [        {            "action": [                "ssm:GetSecretValue"            ],            "effect": "allow",            "resource": [                "*"            ]        }    ],    "version": "2.0"}

5. 单击完成即可添加策略。

步骤3:新建 OIDC 角色

1. 登录 腾讯云访问管理控制台,选择左侧导航中的角色。2.角色页面,选择新建角色 > 身份提供商。3.新建自定义角色页面,参考以下信息进行设置。

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


身份提供商类型:选择 OIDC。选择身份提供商:选择本次为哪个身份提供商创建角色。使用条件:填写 oidc:aud 的 value 值。注意:身份提供商的 value 值标识为 $my_provider_id。oidc:aud 的 value 值需要和 CAM OIDC 提供商的客户端 ID value 值保持一致。oidc:aud 的 value 值标识为$my_pod_audience,当oidc:aud的 value 值有多个时,任选其中之一即可。4. 单击下一步,进入配置角色策略页面,选择在 步骤2 中创建并获取 SSM 的策略,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


5. 单击下一步,进入配置角色标签页面,若不需要设置标签可直接下一步,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


6. 单击下一步,进入审阅页面,编辑角色名称角色描述,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


7. 单击完成。角色创建完成后,进入角色详情页,可以查看 OIDC 角色的 RoleArn 与该角色拥有的权限,如下图所示:

腾讯云容器服务使用 ExternalSecretOperator 导入腾讯云 SSM 凭据同尘科技


注意:RoleArn 的 value 值标识为$my_pod_role_arn

步骤4:组件使用说明

1. 创建 ServiceAccount。您可以将以下内容保存到 my-serviceaccount.yaml 中:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-serviceaccount
  annotations:
    tke.cloud.tencent.com/role-arn: $my_pod_role_arn
    tke.cloud.tencent.com/audience: $my_pod_audience
    tke.cloud.tencent.com/providerID: $my_provider_id

说明:将 $my_pod_role_arn 替换为 RoleArn 的 value 值。将 $my_pod_audience 替换为 oidc:aud 的 value 值。将 $my_provider_id 替换为“身份提供商”。2. 创建 SecretStore。您可以将以下内容保存到 my-secretstore.yaml 中:

apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: secretstore-tkeoidc
spec:
  provider:
    tencent:
      regionID: ap-guangzhou
      auth:
        serviceAccountRef:
          name: my-serviceaccount

3. 创建 ExternalSecret。您可以将以下内容保存到 my-externalsecret.yaml 中:

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: external-secret-tkeoidc
spec:
  refreshInterval: 1h
  secretStoreRef:
    kind: SecretStore
    name: secretstore-tkeoidc
  target:
    name: my-secret-key-to-be-created
    creationPolicy: Owner
  data:
    - secretKey: secret-key-to-be-managed
      remoteRef:
        key: hello-test
        version: v1
        # option
        property: password

4. 部署示例,请执行以下命令:

kubectl apply -f my-serviceaccount.yaml
kubectl apply -f my-secretstore.yaml
kubectl apply -f my-externalsecret.yaml

5. 查看目标 Secret 是否创建成功,请执行以下命令:

kubectl get secret my-secret-key-to-be-created -o yaml

注意:在没有关闭同步刷新的前提下,可以修改 SSM 凭据管理系统中的密钥内容,等到刷新时间到达后,目标 secret 会完成同步。

容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:http://www.yunxiaoer.com/148390.html

(0)
上一篇 2023年12月9日 下午12:55
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储提交网页审核任务

    功能描述 本接口用于提交一个网页审核任务。网页审核功能为异步任务方式,您可以通过提交网页审核任务审核您的网页文件,然后通过 查询网页审核任务接口 或 网页审核回调 查询审核结果。该接口支持情况如下:支持对网页文件进行自动检测,从 OCR 文本识别、物体检测(实体、广告台标、二维码等)、图像识别几个维度,通过深度学习技术,识别网页中的违规内容。支持识别多种违规…

    腾讯云 2023年12月9日
  • 阿里云日志服务SLS错误码-云淘科技

    在调用API接口过程中,若服务端返回结果中包含错误信息,则表示调用API接口失败。您可以根据本文错误码对照表查找对应的解决方法。 概述 当API请求发生错误的时候,服务端会返回错误信息,包括HTTP的Status Code和响应Body中的具体错误细节。其中响应Body中的错误细节为如下格式: { “errorCode” : , “errorMessage”…

    阿里云日志服务SLS 2023年12月10日
  • 腾讯云对象存储基础图片处理

    简介 腾讯云对象存储(Cloud Object Storage,COS)集成了 数据万象(Cloud Infinite,CI)专业的一体化多媒体解决方案,涵盖以下图片处理功能,详情可见 图片处理概述。 服务 功能 说明 基础图片处理服务 缩放 等比缩放、设定目标宽高缩放等多种方式  裁剪 普通裁剪、缩放裁剪、内切圆、人脸智能裁剪  旋转 自适应旋转、普通…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云CVM服务器挂载和卸载云硬盘问题

    什么是设备名(挂载点)? 设备名(挂载点)是云服务器实例上云硬盘在磁盘控制器总线上的位置。所选配的设备名,在 Linux 操作系统下与磁盘设备号对应,在 Windows 操作系统下与磁盘管理器中的磁盘顺序一致。 一块云硬盘可以挂载到多台云服务器实例上吗? 暂不支持。您可以将多达20块云硬盘挂载到同一台云服务器,但目前暂不支持多台云服务器同时共享同一块云硬盘,…

    腾讯云 2023年12月9日
  • 数据传输DTS中公司有阿里云vpn 我本地电脑 如何访问到DMS内网数据库的安全代理地址?-云小二-阿里云

    数据传输DTS中公司有阿里云vpn 我本地电脑 如何访问到DMS内网数据库的安全代理地址? 以下为热心网友提供的参考意见 首先需要确保你已经成功安装并配置了阿里云VPN客户端。 登录阿里云控制台,在VPC服务中找到你的虚拟私有云(VPC)实例。 在VPC实例详情页面中,查看“子网”部分,记录下你需要访问的子网ID和CIDR范围。 在本地电脑上打开阿里云VPN…

    阿里云 2023年12月14日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。