阿里云镜像仓库授权问题

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在使用公有云镜像仓库的时候,我们总有一种需要,即把命名空间或者仓库分配给不同的子账号,让子账号能够管理。那么在阿里云上是如何做到的呢?本文就先实践一下。一、首先通过ram控制台创建一个子账号 二、创建好子账号以后我们用子账号登录控制台第一次会要求我们创建仓库密码,这个密码就是我们登录仓库拉取镜像的.

在使用公有云镜像仓库的时候,我们总有一种需要,即把命名空间或者仓库分配给不同的子账号,让子账号能够管理。那么在阿里云上是如何做到的呢?本文就先实践一下。

一、首先通过ram控制台创建一个子账号

image

二、创建好子账号以后我们用子账号登录控制台

image
第一次会要求我们创建仓库密码,这个密码就是我们登录仓库拉取镜像的凭证
image
但是我们会发现用子账号登录之后完全看不到我们的主账号的命名空间,那么要怎么做才能看到呢?

三、首先我们说说镜像服务的构成

1.代码源
image
在这里主要是绑定代码仓库,代码仓库对镜像仓库授权之后,镜像仓库能拉取到代码,这里的代码主要是dockerfile
用于构建镜像
2.命名空间
image
这里我们理解成项目,比如我可以创建product pre-product dev 作为线上、预发布、开发环境的命名空间
命名空间没有地域区分
3.镜像仓库
image
镜像仓库就是存放我们镜像的地方了,比如我们可以在product线上环境的命名空间下创建
nginx apache tomcat php nodejs java 等镜像用于构建服务,如果有版本的区别,比如我线上的nodejs镜像有需要node8和node6,怎么办呢? 这个时候我们可以通过tag来加以区别,通过修改dockerfile,保存两个版本的nodejs的镜像在仓库里面,在k8s部署时候根据tag取不同版本的基础环境作为无状态服务。
注意:仓库是有地域区分的,在香港创建的仓库在北京是地域下是看不到的哈,如果有人说仓库被阿里云删了,请一定要看看自己是不是选错地域了???

四、授权

1.假如我要子账号登录 Registry后 pull所有该命名空间下的镜像,可以通过OpenAPI 查看到该命名空间的信息及该命名空间下所有镜像仓库的相关信息

{
  "Statement": [
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PullRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1/*"
      ]
    }
  ],
  "Version": "1"
}

权限分配
image

2.但是这个时候还是看不到的哈,如果我们想看到命名空间,要加对alitest1命名空间加以下规则才能看到

{
  "Statement": [
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PullRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1/*"  #这个表示对alitest1命名空间给权限,如果要具体到某个仓库 * 换成仓库名
      ]
    },
    {
      "Action": [
        "cr:ListNamespace",
        "cr:ListRepository"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ],
  "Version": "1"
}

授权之后我能看到所有命名空间,但是只能对被授权的命名空间进行管理
子账号登录控制台后就能和主站号一样看到所有的命名空间了
image

但是请注意 我们只能对alitest1进行操作 因为只有alitest1的授权

五、使用子账号进行pull和push

1.下面进行测试,先推送到镜像仓库
请参考此文档:
https://help.aliyun.com/document_detail/67992.html?spm=5176.8351553.0.0.4b2519911tzA7e
鉴权action:
cr:PushRepository
我现在要把一个busybox推送到阿里云镜像仓库下去
鉴权对象:
命名空间:alitest1
镜像仓库:test
完整鉴权规则:

{
  "Statement": [
    {
      "Action": [
        "cr:*"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:cn-hongkong:*:repository/alitest1/test"
      ]
    },
    {
      "Action": [
        "cr:Get*",
        "cr:List*",
        "cr:PushRepository"  
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:cr:*:*:repository/alitest1"
      ]
    }
  ],
  "Version": "1"
}

image

推送测试:
先在节点上登录仓库,很多人access denied的原因就是没登录成功
image

image
完整过程:
image
如果大家不晓得怎么推送,控制台已经给出了命令
image

最后一步,控制台验证:
image

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用问题之 拉取阿里云acr仓库的镜像时,配置内网地址还是公网地址
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
运维 Devops
阿里云云效操作报错合集之创建镜像仓库时遇到报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之创建镜像仓库时遇到报错,是什么导致的
|
22天前
|
弹性计算 Docker 容器
创建阿里云镜像仓库imagePullSecrets
创建阿里云镜像仓库imagePullSecrets
|
25天前
|
存储 运维 数据安全/隐私保护
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
如何高效利用阿里云Docker镜像仓库管理您的容器镜像
|
4月前
阿里云配置dcoker镜像仓库
阿里云配置dcoker镜像仓库
241 0
|
2月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用合集之如何通过内网推送镜像到镜像仓库
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
容器 Cloud Native 安全
CTF本地靶场搭建——基于阿里云ACR实现动态flag题型的创建
本文介绍了如何利用阿里云ACR服务创建动态flag题型。阿里云容器镜像服务ACR是一个支持 OCI 标准的云原生制品托管和分发平台,提供全球化加速、大规模分发等功能,简化云原生应用交付。由于dockerhub访问不便,文章建议使用ACR作为替代。步骤包括在虚拟机内创建【GZCTF】->【WEB】->【src】文件夹,编写index.php和flag.sh文件,然后创建Dockerfile。接着,用户需在阿里云注册并使用ACR,构建、推送镜像,并在靶场部署动态容器。通过ACR,可以实现不同账号看到不同flag的动态更新,完成了动态flag题型的创建。
|
4月前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
2701 0
|
4月前
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
Devops Java 数据安全/隐私保护
DevOps搭建(二)-阿里云镜像仓库的使用详解
DevOps搭建(二)-阿里云镜像仓库的使用详解
132 0