You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确配置AWS Kubernetes环境下kops的权限?

kops在AWS上的权限配置优化指南

嘿,我来帮你梳理下当前kops权限配置的问题,以及正确的配置方式:

你的当前配置存在的问题

你给kops组附加了AmazonEC2FullAccess、AmazonRoute53FullAccess、AmazonS3FullAccess这三个全量权限,这其实权限过于宽泛,违反了IAM的最小权限原则——任何属于这个组的用户都能完全操控你的EC2、Route53、S3资源,会带来不必要的安全风险。而且你还漏掉了kops创建集群必需的IAM、AutoScaling、CloudFormation相关权限,这会导致后续kops创建集群时直接失败。

正确的kops权限配置步骤

1. 创建基础的IAM组和用户

首先创建kops组,再创建专属用户并加入该组:

# 创建kops组
aws iam create-group --group-name kops

# 创建kops专用用户
aws iam create-user --user-name kops-admin

# 将用户加入kops组
aws iam add-user-to-group --user-name kops-admin --group-name kops

2. 配置最小权限策略

kops需要的权限是特定的,我们可以自定义一个最小权限策略文件(比如命名为kops-minimum-policy.json),避免全量权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                // EC2相关:集群节点、网络、负载均衡等管理
                "ec2:Describe*",
                "ec2:Create*",
                "ec2:Modify*",
                "ec2:Delete*",
                "ec2:RunInstances",
                // Route53相关:集群域名解析管理
                "route53:ChangeResourceRecordSets",
                "route53:HostedZone*",
                "route53:Get*",
                // S3相关:仅针对kops状态存储桶的权限(替换为你的桶名)
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketVersioning",
                "s3:GetBucket*",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                // IAM相关:创建集群所需的角色、实例配置文件
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:GetRole",
                "iam:ListRoles",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy",
                "iam:CreateInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:GetInstanceProfile",
                "iam:ListInstanceProfiles",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:PassRole",
                // AutoScaling和CloudFormation:集群扩缩容、资源编排
                "autoscaling:*",
                "cloudformation:*"
            ],
            "Resource": "*"
        }
    ]
}

如果想更严格,可以把S3的Resource限制为你要用来存储kops状态的特定桶ARN,比如arn:aws:s3:::your-kops-state-bucket/*和arn:aws:s3:::your-kops-state-bucket。

然后创建这个策略并附加到kops组:

# 创建自定义策略(替换YOUR_ACCOUNT_ID为你的AWS账号ID)
aws iam create-policy --policy-name KopsMinimumPolicy --policy-document file://kops-minimum-policy.json

# 附加策略到kops组
aws iam attach-group-policy --group-name kops --policy-arn arn:aws:iam::YOUR_ACCOUNT_ID:policy/KopsMinimumPolicy

3. 配置用户访问凭证

给kops用户生成访问密钥,并配置到本地AWS客户端:

# 生成访问密钥(保存好返回的AccessKeyId和SecretAccessKey)
aws iam create-access-key --user-name kops-admin

# 配置本地AWS凭证
aws configure
# 依次输入AccessKeyId、SecretAccessKey、默认区域(比如us-east-1)、默认输出格式

4. 配置kops状态存储桶

kops需要一个S3桶来存储集群的状态信息,先创建并配置这个桶:

# 创建桶(桶名必须全局唯一,替换为你的桶名)
aws s3 mb s3://your-kops-state-bucket --region us-east-1

# 启用版本控制,防止状态丢失
aws s3api put-bucket-versioning --bucket your-kops-state-bucket --versioning-configuration Status=Enabled

# 设置环境变量,让kops默认使用这个桶
export KOPS_STATE_STORE=s3://your-kops-state-bucket
# 可以把这个命令加入你的shell配置文件(比如~/.bashrc),避免每次都设置

总结

你的初始配置不仅权限过大,还缺少了kops创建集群必需的IAM、AutoScaling等权限。按照上面的最小权限配置,既能满足kops的所有操作需求,又能降低安全风险,同时确保集群创建过程顺利。

内容的提问来源于stack exchange,提问作者Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:15:54