@@ -133,9 +133,71 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
133133
134134- in the ` Key policy ` of the KMS key that is used to encrypt data in the S3 bucket
135135
136+ ## Cross-account ECR access
137+
138+ ⚠️ ** Mandatory in case of processors-controller usage**
139+
140+ The approach is based on the [ official AWS documentation] ( https://repost.aws/knowledge-center/secondary-account-access-ecr ) for ECR repository policies and cross-account access patterns.
141+
142+ ECR cross-account access requires configuring both:
143+
144+ - ` IAM policy ` attached to the IAM role/user
145+
146+ If the ECR repository uses ` KMS encryption ` with a customer-managed key, then it is necessary to additionally grant access to the KMS key in:
147+
148+ - The ` IAM policy ` that is attached to the IAM role/user
149+
150+ - The ` Key policy ` of the KMS key used to encrypt the ECR repository
151+
136152## Configuration examples
137153
154+ <details ><summary >IAM policy for ECR access</summary >
155+
156+ ``` json
157+ {
158+ "Version" : " 2012-10-17" ,
159+ "Statement" : [
160+ {
161+ "Sid" : " ECRRepositoryAccess" ,
162+ "Effect" : " Allow" ,
163+ "Action" : [
164+ " ecr:GetAuthorizationToken"
165+ ],
166+ "Resource" : " *"
167+ },
168+ {
169+ "Sid" : " ECRImagePull" ,
170+ "Effect" : " Allow" ,
171+ "Action" : [
172+ " ecr:GetDownloadUrlForLayer" ,
173+ " ecr:BatchGetImage" ,
174+ " ecr:BatchCheckLayerAvailability" ,
175+ " ecr:DescribeRepositories" ,
176+ " ecr:DescribeImages" ,
177+ " ecr:ListImages"
178+ ],
179+ "Resource" : " *"
180+ },
181+ {
182+ "Sid" : " AllowUseOfTheKey" ,
183+ "Effect" : " Allow" ,
184+ "Action" : [
185+ " kms:Encrypt" ,
186+ " kms:Decrypt" ,
187+ " kms:ReEncrypt*" ,
188+ " kms:GenerateDataKey*" ,
189+ " kms:DescribeKey"
190+ ],
191+ "Resource" : [" KMS_KEY_ARN" ]
192+ }
193+ ]
194+ }
195+ ```
196+
197+ </details >
198+
138199<details ><summary >AbortIncompleteMultipartUpload rule</summary >
200+
139201``` json
140202{
141203 "Rules" : [
@@ -149,27 +211,29 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
149211 ]
150212}
151213```
214+
152215</details >
153216
154217<details ><summary >IAM policy for S3 access</summary >
218+
155219``` json
156220{
157221 "Version" : " 2012-10-17" ,
158222 "Statement" : [
159223 {
160224 "Sid" : " ListObjectsInBucket" ,
161- "Effect" : " Allow" ,
225+ "Effect" : " Allow" ,
162226 "Action" : [
163227 " s3:ListBucket" ,
164228 " s3:GetBucketLocation" ,
165229 " s3:ListBucketMultipartUploads" ,
166230 " s3:ListBucketVersions"
167231 ],
168- "Resource" : [" S3_BUCKET_ARN" ]
232+ "Resource" : [" S3_BUCKET_ARN" ]
169233 },
170234 {
171235 "Sid" : " AllObjectActions" ,
172- "Effect" : " Allow" ,
236+ "Effect" : " Allow" ,
173237 "Action" : [
174238 " s3:*Object*" ,
175239 " s3:AbortMultipartUpload" ,
@@ -179,7 +243,7 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
179243 },
180244 {
181245 "Sid" : " AllowUseOfTheKey" ,
182- "Effect" : " Allow" ,
246+ "Effect" : " Allow" ,
183247 "Action" : [
184248 " kms:Encrypt" ,
185249 " kms:Decrypt" ,
@@ -192,9 +256,11 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
192256 ]
193257}
194258```
259+
195260</details >
196261
197262<details ><summary >IRSA Trust Relationships</summary >
263+
198264``` json
199265{
200266 "Version" : " 2012-10-17" ,
@@ -215,9 +281,11 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
215281 ]
216282}
217283```
284+
218285</details >
219286
220287<details ><summary >Pod Identity Trust Relationships</summary >
288+
221289``` json
222290{
223291 "Version" : " 2012-10-17" ,
@@ -235,9 +303,11 @@ If the S3 bucket uses `SSE-KMS` encryption, then it is necessary to additionally
235303 ]
236304}
237305```
306+
238307</details >
239308
240309<details ><summary >GP3 StorageClass example</summary >
310+
241311``` yaml
242312apiVersion : storage.k8s.io/v1
243313kind : StorageClass
@@ -249,9 +319,11 @@ provisioner: ebs.csi.aws.com
249319volumeBindingMode : Immediate
250320allowVolumeExpansion : true
251321` ` `
322+
252323</details>
253324
254325<details><summary>TargetGroupBinding example</summary>
326+
255327` ` ` yaml
256328apiVersion : elbv2.k8s.aws/v1beta1
257329kind : TargetGroupBinding
@@ -265,4 +337,5 @@ spec:
265337 port : 80
266338 targetGroupARN : TARGET_GROUP_ARN
267339` ` `
340+
268341</details>
0 commit comments