|
| 1 | +// Module included in the following assemblies: |
| 2 | +// |
| 3 | +// * authentication/managing_cloud_provider_credentials/cco-short-term-creds.adoc |
| 4 | + |
| 5 | +:_content-type: REFERENCE |
| 6 | +[id="cco-short-term-creds-component-permissions-aws_{context}"] |
| 7 | += AWS component secret permissions requirements |
| 8 | + |
| 9 | +{product-title} components require the following permissions. These values are in the `CredentialsRequest` custom resource (CR) for each component. |
| 10 | + |
| 11 | +[NOTE] |
| 12 | +==== |
| 13 | +These permissions apply to all resources. Unless specified, there are no request conditions on these permissions. |
| 14 | +==== |
| 15 | + |
| 16 | +[cols="a,a,a"] |
| 17 | +|==== |
| 18 | +|Component |Custom resource |Required permissions for services |
| 19 | + |
| 20 | +|Cluster CAPI Operator |
| 21 | +|`openshift-cluster-api-aws` |
| 22 | +|**EC2** |
| 23 | + |
| 24 | +* `ec2:CreateTags` |
| 25 | +* `ec2:DescribeAvailabilityZones` |
| 26 | +* `ec2:DescribeDhcpOptions` |
| 27 | +* `ec2:DescribeImages` |
| 28 | +* `ec2:DescribeInstances` |
| 29 | +* `ec2:DescribeInternetGateways` |
| 30 | +* `ec2:DescribeSecurityGroups` |
| 31 | +* `ec2:DescribeSubnets` |
| 32 | +* `ec2:DescribeVpcs` |
| 33 | +* `ec2:DescribeNetworkInterfaces` |
| 34 | +* `ec2:DescribeNetworkInterfaceAttribute` |
| 35 | +* `ec2:ModifyNetworkInterfaceAttribute` |
| 36 | +* `ec2:RunInstances` |
| 37 | +* `ec2:TerminateInstances` |
| 38 | +
|
| 39 | +**Elastic load balancing** |
| 40 | + |
| 41 | +* `elasticloadbalancing:DescribeLoadBalancers` |
| 42 | +* `elasticloadbalancing:DescribeTargetGroups` |
| 43 | +* `elasticloadbalancing:DescribeTargetHealth` |
| 44 | +* `elasticloadbalancing:RegisterInstancesWithLoadBalancer` |
| 45 | +* `elasticloadbalancing:RegisterTargets` |
| 46 | +* `elasticloadbalancing:DeregisterTargets` |
| 47 | +
|
| 48 | +**Identity and Access Management (IAM)** |
| 49 | + |
| 50 | +* `iam:PassRole` |
| 51 | +* `iam:CreateServiceLinkedRole` |
| 52 | +
|
| 53 | +**Key Management Service (KMS)** |
| 54 | + |
| 55 | +* `kms:Decrypt` |
| 56 | +* `kms:Encrypt` |
| 57 | +* `kms:GenerateDataKey` |
| 58 | +* `kms:GenerateDataKeyWithoutPlainText` |
| 59 | +* `kms:DescribeKey` |
| 60 | +* `kms:RevokeGrant`^[1]^ |
| 61 | +* `kms:CreateGrant` ^[1]^ |
| 62 | +* `kms:ListGrants` ^[1]^ |
| 63 | +
|
| 64 | +|Machine API Operator |
| 65 | +|`openshift-machine-api-aws` |
| 66 | +|**EC2** |
| 67 | + |
| 68 | +* `ec2:CreateTags` |
| 69 | +* `ec2:DescribeAvailabilityZones` |
| 70 | +* `ec2:DescribeDhcpOptions` |
| 71 | +* `ec2:DescribeImages` |
| 72 | +* `ec2:DescribeInstances` |
| 73 | +* `ec2:DescribeInstanceTypes` |
| 74 | +* `ec2:DescribeInternetGateways` |
| 75 | +* `ec2:DescribeSecurityGroups` |
| 76 | +* `ec2:DescribeRegions` |
| 77 | +* `ec2:DescribeSubnets` |
| 78 | +* `ec2:DescribeVpcs` |
| 79 | +* `ec2:RunInstances` |
| 80 | +* `ec2:TerminateInstances` |
| 81 | +
|
| 82 | +**Elastic load balancing** |
| 83 | + |
| 84 | +* `elasticloadbalancing:DescribeLoadBalancers` |
| 85 | +* `elasticloadbalancing:DescribeTargetGroups` |
| 86 | +* `elasticloadbalancing:DescribeTargetHealth` |
| 87 | +* `elasticloadbalancing:RegisterInstancesWithLoadBalancer` |
| 88 | +* `elasticloadbalancing:RegisterTargets` |
| 89 | +* `elasticloadbalancing:DeregisterTargets` |
| 90 | +
|
| 91 | +**Identity and Access Management (IAM)** |
| 92 | + |
| 93 | +* `iam:PassRole` |
| 94 | +* `iam:CreateServiceLinkedRole` |
| 95 | +
|
| 96 | +**Key Management Service (KMS)** |
| 97 | + |
| 98 | +* `kms:Decrypt` |
| 99 | +* `kms:Encrypt` |
| 100 | +* `kms:GenerateDataKey` |
| 101 | +* `kms:GenerateDataKeyWithoutPlainText` |
| 102 | +* `kms:DescribeKey` |
| 103 | +* `kms:RevokeGrant`^[1]^ |
| 104 | +* `kms:CreateGrant` ^[1]^ |
| 105 | +* `kms:ListGrants` ^[1]^ |
| 106 | +
|
| 107 | +|Cloud Credential Operator |
| 108 | +|`cloud-credential-operator-iam-ro` |
| 109 | +|**Identity and Access Management (IAM)** |
| 110 | + |
| 111 | +* `iam:GetUser` |
| 112 | +* `iam:GetUserPolicy` |
| 113 | +* `iam:ListAccessKeys` |
| 114 | +
|
| 115 | +|Cluster Image Registry Operator |
| 116 | +|`openshift-image-registry` |
| 117 | +|**S3** |
| 118 | + |
| 119 | +* `s3:CreateBucket` |
| 120 | +* `s3:DeleteBucket` |
| 121 | +* `s3:PutBucketTagging` |
| 122 | +* `s3:GetBucketTagging` |
| 123 | +* `s3:PutBucketPublicAccessBlock` |
| 124 | +* `s3:GetBucketPublicAccessBlock` |
| 125 | +* `s3:PutEncryptionConfiguration` |
| 126 | +* `s3:GetEncryptionConfiguration` |
| 127 | +* `s3:PutLifecycleConfiguration` |
| 128 | +* `s3:GetLifecycleConfiguration` |
| 129 | +* `s3:GetBucketLocation` |
| 130 | +* `s3:ListBucket` |
| 131 | +* `s3:GetObject` |
| 132 | +* `s3:PutObject` |
| 133 | +* `s3:DeleteObject` |
| 134 | +* `s3:ListBucketMultipartUploads` |
| 135 | +* `s3:AbortMultipartUpload` |
| 136 | +* `s3:ListMultipartUploadParts` |
| 137 | +
|
| 138 | +|Ingress Operator |
| 139 | +|`openshift-ingress` |
| 140 | +|**Elastic load balancing** |
| 141 | + |
| 142 | +* `elasticloadbalancing:DescribeLoadBalancers` |
| 143 | +
|
| 144 | +**Route 53** |
| 145 | + |
| 146 | +* `route53:ListHostedZones` |
| 147 | +* `route53:ListTagsForResources` |
| 148 | +* `route53:ChangeResourceRecordSets` |
| 149 | +
|
| 150 | +**Tag** |
| 151 | + |
| 152 | +* `tag:GetResources` |
| 153 | +
|
| 154 | +**Security Token Service (STS)** |
| 155 | + |
| 156 | +* `sts:AssumeRole` |
| 157 | +
|
| 158 | +|Cluster Network Operator |
| 159 | +|`openshift-cloud-network-config-controller-aws` |
| 160 | +|**EC2** |
| 161 | + |
| 162 | +* `ec2:DescribeInstances` |
| 163 | +* `ec2:DescribeInstanceStatus` |
| 164 | +* `ec2:DescribeInstanceTypes` |
| 165 | +* `ec2:UnassignPrivateIpAddresses` |
| 166 | +* `ec2:AssignPrivateIpAddresses` |
| 167 | +* `ec2:UnassignIpv6Addresses` |
| 168 | +* `ec2:AssignIpv6Addresses` |
| 169 | +* `ec2:DescribeSubnets` |
| 170 | +* `ec2:DescribeNetworkInterfaces` |
| 171 | +
|
| 172 | +|AWS Elastic Block Store CSI Driver Operator |
| 173 | +|`aws-ebs-csi-driver-operator` |
| 174 | +|**EC2** |
| 175 | + |
| 176 | +* `ec2:AttachVolume` |
| 177 | +* `ec2:CreateSnapshot` |
| 178 | +* `ec2:CreateTags` |
| 179 | +* `ec2:CreateVolume` |
| 180 | +* `ec2:DeleteSnapshot` |
| 181 | +* `ec2:DeleteTags` |
| 182 | +* `ec2:DeleteVolume` |
| 183 | +* `ec2:DescribeInstances` |
| 184 | +* `ec2:DescribeSnapshots` |
| 185 | +* `ec2:DescribeTags` |
| 186 | +* `ec2:DescribeVolumes` |
| 187 | +* `ec2:DescribeVolumesModifications` |
| 188 | +* `ec2:DetachVolume` |
| 189 | +* `ec2:ModifyVolume` |
| 190 | +* `ec2:DescribeAvailabilityZones` |
| 191 | +* `ec2:EnableFastSnapshotRestores` |
| 192 | +
|
| 193 | +**Key Management Service (KMS)** |
| 194 | + |
| 195 | +* `kms:ReEncrypt*` |
| 196 | +* `kms:Decrypt` |
| 197 | +* `kms:Encrypt` |
| 198 | +* `kms:GenerateDataKey` |
| 199 | +* `kms:GenerateDataKeyWithoutPlainText` |
| 200 | +* `kms:DescribeKey` |
| 201 | +* `kms:RevokeGrant`^[1]^ |
| 202 | +* `kms:CreateGrant` ^[1]^ |
| 203 | +* `kms:ListGrants` ^[1]^ |
| 204 | +
|
| 205 | +|==== |
| 206 | +[.small] |
| 207 | +-- |
| 208 | +1. Request condition: `kms:GrantIsForAWSResource: true` |
| 209 | +-- |
0 commit comments