Source controller support for Instance Metadata Service v2 (IMDSv2) on AWS
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
El issue menciona source-controller y la biblioteca minio-go, pero no menciona archivos ni pruebas del repositorio. Empieza siguiendo la configuración de las credenciales de AWS para S3 Bucket source y las solicitudes IMDS; después, verifica la reconciliación con instancias que requieren IMDSv2 y confirma que las solicitudes autenticadas mediante token eliminan el error 401.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I get the following error message in source-controller when Flux is configured to use S3 bucket source,:
{
"level": "error",
"ts": "2022-06-03T13:29:32.250Z",
"logger": "controller.bucket",
"msg": "Reconciler error",
"reconciler group": "source.toolkit.fluxcd.io",
"reconciler kind": "Bucket",
"name": "deploy-bucket",
"namespace": "flux-system",
"error": "failed to confirm existence of 'retracted-flux-1ejashffo6o0p' bucket: 401 Unauthorized"
}
I have created the bucket source with the following command:
flux create source bucket deploy-bucket \
--bucket-name=retracted-flux-1ejashffo6o0p \
--provider=aws \
--endpoint=s3.amazonaws.com \
--region=eu-central-1 \
--interval=5m
.. and receive the following error message:
✚ generating Bucket source
► applying Bucket source
✔ Bucket source created
◎ waiting for Bucket source reconciliation
✗ failed to confirm existence of 'retracted-flux-1ejashffo6o0p' bucket: 401 Unauthorized
It appears that minio-go library uses Instance Metadata Service (IMDS) at 169.254.169.254 to create temporary credentials to access the S3 bucket (from captured traffic):
GET /latest/meta-data/iam/security-credentials/ HTTP/1.1
Host: 169.254.169.254
User-Agent: Go-http-client/1.1
Accept-Encoding: gzip
This is not permitted, because my configuration requires Instance Metadata Service v2 (IMDSv2) since doing so avoids some vulnerabilities:
HTTP/1.1 401 Unauthorized
Content-Length: 0
Date: Fri, 03 Jun 2022 13:29:32 GMT
Server: EC2ws
Connection: close
Content-Type: text/plain
The fix would be to use Instance Metadata Service v2 (IMDSv2) compatible client with the minio-go library. This adds a session token to the requests.
I was able to workaround by creating an IAM user with an access key, then creating the source with--access-key and --secret-key args.
I am running Flux v0.30.2 on EKS with the Kubernetes version v1.21. I have created the IAM policy to access the bucket as instructed by documentation. Instances receive this policy from the instance profile. The access works when tested with AWS CLI aws s3 ls command.
Resources:
- AWS: Use IMDSv2
- aws/containers-roadmap issue EKS: Support for IMDSv2 #930
- Lenguaje dominante
- Go
- Estrellas
- 283
- Forks
- 252
- Merge medio
- 1 h 6 min
- PR fusionados (30 d)
- 12
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fluxcd/source-controller
-
area/docs good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
fluxcd/source-controller#666 · 2 comentarios ·
-
area/git bug
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
fluxcd/source-controller#2165 · 3 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
fluxcd/source-controller#2150 ·
-
GitRepository `.spec.ref.commit` + `.spec.ref.branch` does not shallow clone, contrary to the docs Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 42/100
fluxcd/source-controller#2146 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
fluxcd/source-controller#2136 · 1 comentario ·
Todos los issues de fluxcd/source-controller
Issues similares
-
bug github_actions
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
registrystack/registry-stack#1393 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
JakeChampion/lang#10213 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
oasisprotocol/oasis-sdk#2523 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100