2.5. IAM 策略和 AWS 身份验证
默认情况下,安装程序会为集群操作所需的权限为 bootstrap、control plane 和计算实例创建实例配置集。
但是,您可以创建自己的 IAM 角色,并将其指定为安装过程的一部分。您可能需要指定自己的角色来部署集群或在安装后管理集群。例如:
- 机构的安全策略要求您使用更严格的权限集来安装集群。
- 安装后,集群使用需要访问其他服务的 Operator 配置。
如果选择指定自己的 IAM 角色,您可以执行以下步骤:
- 从默认策略开始,并根据需要进行调整。如需更多信息,请参阅"IAM 实例配置集的默认权限"。
- 使用 AWS Identity and Access Management Access Analyzer (IAM Access Analyzer) 创建一个基于集群的活动的策略模板。如需更多信息,请参阅"使用 AWS IAM 分析器来创建策略模板"。
2.5.1. IAM 实例配置集的默认权限
默认情况下,安装程序会为集群操作所需的权限为 bootstrap、control plane 和 worker 实例创建 IAM 实例配置集。
以下列表指定 control plane 和计算机器的默认权限:
例 2.14. control plane 实例配置集的默认 IAM 角色权限
-
ec2:AttachVolume
-
ec2:AuthorizeSecurityGroupIngress
-
ec2:CreateSecurityGroup
-
ec2:CreateTags
-
ec2:CreateVolume
-
ec2:DeleteSecurityGroup
-
ec2:DeleteVolume
-
ec2:Describe*
-
ec2:DetachVolume
-
ec2:ModifyInstanceAttribute
-
ec2:ModifyVolume
-
ec2:RevokeSecurityGroupIngress
-
elasticloadbalancing:AddTags
-
elasticloadbalancing:AttachLoadBalancerToSubnets
-
elasticloadbalancing:ApplySecurityGroupsToLoadBalancer
-
elasticloadbalancing:CreateListener
-
elasticloadbalancing:CreateLoadBalancer
-
elasticloadbalancing:CreateLoadBalancerPolicy
-
elasticloadbalancing:CreateLoadBalancerListeners
-
elasticloadbalancing:CreateTargetGroup
-
elasticloadbalancing:ConfigureHealthCheck
-
elasticloadbalancing:DeleteListener
-
elasticloadbalancing:DeleteLoadBalancer
-
elasticloadbalancing:DeleteLoadBalancerListeners
-
elasticloadbalancing:DeleteTargetGroup
-
elasticloadbalancing:DeregisterInstancesFromLoadBalancer
-
elasticloadbalancing:DeregisterTargets
-
elasticloadbalancing:Describe*
-
elasticloadbalancing:DetachLoadBalancerFromSubnets
-
elasticloadbalancing:ModifyListener
-
elasticloadbalancing:ModifyLoadBalancerAttributes
-
elasticloadbalancing:ModifyTargetGroup
-
elasticloadbalancing:ModifyTargetGroupAttributes
-
elasticloadbalancing:RegisterInstancesWithLoadBalancer
-
elasticloadbalancing:RegisterTargets
-
elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer
-
elasticloadbalancing:SetLoadBalancerPoliciesOfListener
-
kms:DescribeKey
例 2.15. 计算实例配置集的默认 IAM 角色权限
-
ec2:DescribeInstances
-
ec2:DescribeRegions
2.5.2. 指定现有的 IAM 角色
您可以使用 install-config.yaml
文件为 control plane 和计算实例指定现有 IAM 角色,而不是让安装程序创建具有默认权限的 IAM 实例配置集。
先决条件
-
您有一个现有的
install-config.yaml
文件。
流程
使用计算机器的现有角色更新
compute.platform.aws.iamRole
。带有计算实例的 IAM 角色的
install-config.yaml
文件示例compute: - hyperthreading: Enabled name: worker platform: aws: iamRole: ExampleRole
使用 control plane 机器的现有角色更新
controlPlane.platform.aws.iamRole
。带有 control plane 实例的 IAM 角色的
install-config.yaml
文件示例controlPlane: hyperthreading: Enabled name: master platform: aws: iamRole: ExampleRole
- 保存文件并在安装 OpenShift Container Platform 集群时引用。
要在安装集群后更改或更新 IAM 帐户,请参阅 RHOCP 4 AWS cloud-credentials access key is expired (Red Hat Knowledgebase)。
其他资源
- 请参阅部署集群。
2.5.3. 使用 AWS IAM 分析器创建策略模板
control plane 和计算实例配置集需要的最小权限集取决于如何为每日操作配置集群。
要确定集群实例需要哪些权限的一种方法是使用 AWS Identity and Access Management Access Analyzer (IAM Access Analyzer) 创建策略模板:
- 策略模板包含集群在指定时间段内使用的权限。
- 然后,您可以使用模板来创建具有细粒度权限的策略。
流程
整个过程可以是:
- 确保启用了 CloudTrail。CloudTrail 记录 AWS 帐户中的所有操作和事件,包括创建策略模板所需的 API 调用。如需更多信息,请参阅 AWS 文档的使用 CloudTrail 。
- 为 control plane 实例创建实例配置集,并为计算实例创建一个实例配置集。确保为每个角色分配一个 permissive 策略,如 PowerUserAccess。如需更多信息,请参阅 AWS 文档的创建实例配置集角色。
- 在开发环境中安装集群,并根据需要进行配置。务必在生产环境中部署集群托管的所有应用程序。
- 全面测试集群。测试集群可确保记录所有必需的 API 调用。
- 使用 IAM Access Analyzer 为每个实例配置集创建策略模板。如需更多信息,请参阅 AWS 文档基于 CloudTrail 日志生成策略。
- 创建并为每个实例配置文件添加一个精细的策略。
- 从每个实例配置集中删除 permissive 策略。
- 使用现有实例配置集和新策略部署生产集群。
您可以在策略中添加 IAM 条件,使其更严格且符合您的机构安全要求。