我应该授予什么 aws 权限才能访问另一个 s3 存储桶

what aws permission I should give to acess other s3 buckets

在本文档 (https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 的 linux 选项卡中,AWS 共享了 s3 存储桶以下载最新版本的 aws-iam-authenticator

这个link在新版本发布时不断变化,但是桶名amazon-eks从未改变。

curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/aws-iam-authenticator

没有aws API权限你无法通过编程方式检测到这个文件夹中有什么新版本,如果我直接通过浏览器访问:https://amazon-eks.s3-us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux

所以我必须使用我自己的 AWS 访问密钥,这是允许的。

aws s3 ls s3://amazon-eks/1.21.2/2021-07-05/bin/linux/amd64/
2021-07-15 08:56:11   35290752 aws-iam-authenticator
2021-07-15 08:56:31         55 aws-iam-authenticator.md5
2021-07-15 08:56:31         63 aws-iam-authenticator.sha1
2021-07-15 08:56:31         87 aws-iam-authenticator.sha256
2021-07-15 08:56:31    1865035 cni-amd64-v0.6.0.tgz
2021-07-15 08:56:36         54 cni-amd64-v0.6.0.tgz.md5
2021-07-15 08:56:36         62 cni-amd64-v0.6.0.tgz.sha1
2021-07-15 08:56:36         86 cni-amd64-v0.6.0.tgz.sha256
2021-07-15 08:56:36   36878412 cni-plugins-linux-amd64-v0.8.6.tgz
2021-07-15 08:57:09         68 cni-plugins-linux-amd64-v0.8.6.tgz.md5
2021-07-15 08:57:09         76 cni-plugins-linux-amd64-v0.8.6.tgz.sha1
2021-07-15 08:57:09        100 cni-plugins-linux-amd64-v0.8.6.tgz.sha256
2021-07-15 08:57:09   43122688 kube-proxy
2021-07-15 08:57:43         44 kube-proxy.md5
2021-07-15 08:57:43         52 kube-proxy.sha1
2021-07-15 08:57:43         76 kube-proxy.sha256
2021-07-15 08:57:43   46403584 kubectl
2021-07-15 08:58:23         41 kubectl.md5
2021-07-15 08:58:23         49 kubectl.sha1
2021-07-15 08:58:23         73 kubectl.sha256
2021-07-15 08:58:23  118197040 kubelet
2021-07-15 08:59:44         41 kubelet.md5
2021-07-15 08:59:44         49 kubelet.sha1
2021-07-15 08:59:44         73 kubelet.sha256

现在我的问题是,我如何设置一个AWS IAM用户只有Programmatic access,它不能访问我aws账户中的任何资源,但允许列出public/private中的内容s3 存储桶?

我需要将此 IAM 用户的访问密钥用于 public CICD 管道构建作业,不想冒险公开我自己的 aws 帐户中的资源。

更新

这是该用户的内联策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amazon-eks/*"
        }
    ]
}

您似乎想在不使用凭据的情况下列出 amazon-eks 存储桶的内容。

这可以通过使用 --no-signed-request 选项来完成:

aws s3 ls s3://amazon-eks/1.21.2/2021-07-05/bin/linux/amd64/ --no-sign-request

这避免了提供 IAM 凭据的需要。

我终于弄清楚了 IAM 用户的权限,但显然@John Rotenstein 的解决方案是更好的方法。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::amazon-eks/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::amazon-eks"
        }
    ]
}

有了上面的权限,我可以列出s3 bucket中的内容amazon-eks而不需要我自己的aws账户的权限。