如何获取访问 AWS ECR 的临时会话令牌?
How to get temporary session token for accessing AWS ECR?
我已将图像放入我的 AWS ECR 中。我想从边缘设备中提取图像。如果我在边缘设备中使用 Access/Secret 密钥,我可以登录存储库并访问我的图像,如下所示,
第一步:添加环境变量
export AWS_ACCESS_KEY_ID=access-key
export AWS_SECRET_ACCESS_KEY=secret-key
export AWS_DEFAULT_REGION=ap-southeast-1
第 2 步:使用以下命令登录弹性容器注册表。
aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin repo-id.dkr.ecr.ap-southeast-1.amazonaws.com
第三步:拉取镜像
docker pull repo-id.dkr.ecr.ap-southeast-1.amazonaws.com/image_name
这些步骤确保我可以从 ECR 中提取图像。
现在,我不想在边缘设备上存储访问密钥/机密。我正在寻找一些会话密钥/临时密钥来访问 ECR 图像,而无需在边缘设备上进行 Access/Secret。在这个流程中,我可以消除将高度机密的数据存储到边缘设备。
任何帮助将不胜感激。
编辑- 1:
一种可能的方法是编写一个 Lambda 函数来为 ECR 生成密码并使用 API Key in API Gateway 保护 lambda。我将从 Edge Device 调用 lambda 函数并获取密码以拉取图像。
有用吗?
不幸的是,由于您的设备不在 AWS 中,它将无法获得直接附加 IAM role 的好处(这解决了非硬编码权限的问题)。
但是您可以在 AWS 中创建一个 IAM 角色,然后使用 STS service to assume the role from another IAM user/role that has the permissions to assume the role。当您担任该角色时,您将获得访问 AWS 服务的临时凭证(您可以决定临时凭证的生命周期)。
如果您能找到将这些凭据复制到本地设备的方法,您就可以在其生命周期内使用它们。
我已将图像放入我的 AWS ECR 中。我想从边缘设备中提取图像。如果我在边缘设备中使用 Access/Secret 密钥,我可以登录存储库并访问我的图像,如下所示,
第一步:添加环境变量
export AWS_ACCESS_KEY_ID=access-key
export AWS_SECRET_ACCESS_KEY=secret-key
export AWS_DEFAULT_REGION=ap-southeast-1
第 2 步:使用以下命令登录弹性容器注册表。
aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin repo-id.dkr.ecr.ap-southeast-1.amazonaws.com
第三步:拉取镜像
docker pull repo-id.dkr.ecr.ap-southeast-1.amazonaws.com/image_name
这些步骤确保我可以从 ECR 中提取图像。
现在,我不想在边缘设备上存储访问密钥/机密。我正在寻找一些会话密钥/临时密钥来访问 ECR 图像,而无需在边缘设备上进行 Access/Secret。在这个流程中,我可以消除将高度机密的数据存储到边缘设备。
任何帮助将不胜感激。
编辑- 1:
一种可能的方法是编写一个 Lambda 函数来为 ECR 生成密码并使用 API Key in API Gateway 保护 lambda。我将从 Edge Device 调用 lambda 函数并获取密码以拉取图像。
有用吗?
不幸的是,由于您的设备不在 AWS 中,它将无法获得直接附加 IAM role 的好处(这解决了非硬编码权限的问题)。
但是您可以在 AWS 中创建一个 IAM 角色,然后使用 STS service to assume the role from another IAM user/role that has the permissions to assume the role。当您担任该角色时,您将获得访问 AWS 服务的临时凭证(您可以决定临时凭证的生命周期)。
如果您能找到将这些凭据复制到本地设备的方法,您就可以在其生命周期内使用它们。