开发者社区> 问答> 正文

Swarm mode 集群的访问控制

反向一觉 2017-10-30 15:52:00 1616

简介
如果您使用容器服务创建了多个集群,您的组织里有多个用户需要使用这些集群。如果这些用户共享使用您的云账号秘钥,那么会存在以下的问题:
  • 您的秘钥由多人共享,泄密风险高。
  • 您无法限制用户的访问权限,容易出现误操作导致安全风险。

访问控制 RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。通过 RAM,您可以集中管理您的用户,以及控制用户可以访问您名下哪些资源的权限。对于容器服务而言,90% 以上的用户主要分配的是集群维度的权限,主要是对集群维度的是否可增删的限制。因此为了更简单地使用权限控制,容器服务提供了两种鉴权策略,一种是资源授权,一种是细粒度 API 授权。对于 90% 的用户而言使用资源分配鉴权策略即可满足需求。对于 RAM 有深入的了解希望在 API 级别进行鉴权的用户可以使用 API 细粒度鉴权。

使用场景

假设是一家 APP 开发的公司,主要使用阿里云的服务提供 APP 的后端服务与基础设施和中间件,公司中的成员有后端开发工程师,测试工程师,运维工程师、基础平台工程师。从职责分配上来讲:
  • 后端开发工程师负责开发 APP 的后端服务。
  • 测试工程师负责测试 APP 的后端服务和基础的测试环境维护。
  • 运维工程师负责所有的环境的运维(集群的伸缩,监控等)。
  • 基础平台工程师负责中间件的维护与基础设计的建设,包括 GitLab、Jenkins、Sentry等。

从职责划分上来看,不同的角色对于资源的需求不同,为了保证每个角色有足够的权限完成自己的任务,同时权限不越界。在这个场景中您使用资源分配鉴权即可。

操作步骤

[backcolor=transparent]注意:当您进入 RAM 控制台的时候,可能会发现一些以 acs_ 开头的 RAM 子账号,这些子账号是容器服务自动创建的子账号,请不要删除。

主账号授权
  1. 登录 访问控制管理控制台,创建一个子账号并开启控制台登录。
  2. 登录 容器服务管理控制台,单击左侧导航栏中的 [backcolor=transparent]集群 并单击 [backcolor=transparent]子账号授权。
  3. 选择相应的子账号并单击 [backcolor=transparent]下一步。
  4. 选择对应的集群资源和权限,单击 [backcolor=transparent]下一步 并在弹出的确认对话框中单击 [backcolor=transparent]确定。
  5. 单击 [backcolor=transparent]完成 完成授权。


使用子账号
使用子账号登录(要主账号进入 RAM 控制台并将控制台登录地址告知子用户)并进入 容器服务管理控制台
此时,集群列表中显示被分配的集群。

深入理解鉴权策略
鉴权策略简单地来讲就是对云资源的使用权限的校验。鉴权分为两种,一种是资源分配鉴权,一种是 API 细粒度鉴权。
API 细粒度鉴权是基于访问控制 RAM (Resource Access Management)进行的鉴权,相对来讲更加复杂。
资源分配鉴权是容器服务在 API 细粒度鉴权之上的包装,主要将 API 细粒度鉴权无法实现的资源分配在容器服务中进行了实现,并将 API 细粒度鉴权的鉴权策略封装为只读和读写两个权限。只读权限可以创建应用、删除应用等等,但是无法对集群级别的增删改查进行操作。而读写权限则可以对集群进行完全的管理。

高级用法
API 细粒度鉴权可以实现 API 级别的鉴权。目前提供的后置鉴权条件如下所示。
鉴权 Action 名称解释
GetClusterById获取集群描述
GetClusterCerts获取集群证书
CreateCluster创建集群
DeleteCluster删除集群
UpdateClusterSizeById集群扩容

资源列表如下所示。
资源解释
cluster集群

参考示例:
  1. [backcolor=transparent]{
  2. [backcolor=transparent]  [backcolor=transparent]"Statement"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent][
  3. [backcolor=transparent]    [backcolor=transparent]{
  4. [backcolor=transparent]      [backcolor=transparent]"Action"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"cs:*"[backcolor=transparent],
  5. [backcolor=transparent]      [backcolor=transparent]"Effect"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"Allow"[backcolor=transparent],
  6. [backcolor=transparent]      [backcolor=transparent]"Resource"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"acs:cs:*:*:cluster/cc6b56877fd64407fb615dd09ff85303e"
  7. [backcolor=transparent]    [backcolor=transparent]},
  8. [backcolor=transparent]    [backcolor=transparent]{
  9. [backcolor=transparent]      [backcolor=transparent]"Action"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"cs:*"[backcolor=transparent],
  10. [backcolor=transparent]      [backcolor=transparent]"Effect"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"Allow"[backcolor=transparent],
  11. [backcolor=transparent]      [backcolor=transparent]"Resource"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"acs:cs:*:*:cluster/cee52159dd72d4ead9c0ee1b1708b7065"
  12. [backcolor=transparent]    [backcolor=transparent]}
  13. [backcolor=transparent]  [backcolor=transparent]],
  14. [backcolor=transparent]  [backcolor=transparent]"Version"[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"1"
  15. [backcolor=transparent]}

本示例表示授予集群 cc6b56877fd64407fb615dd09ff85303e 与 cee52159dd72d4ead9c0ee1b1708b7065 的全部权限。
更多的用法参见 RAM 的文档
运维 监控 安全 中间件 jenkins 测试技术 API 持续交付 数据安全/隐私保护 容器
分享到
取消 提交回答
全部回答(0)

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程