Algunas funcionalidades de Atlas, incluyendo Data Federation y Cifrado en reposo, autenticarse con AWS Roles de IAM. Cuando Atlas accede a los servicios de AWS, asume un rol IAM.
Puedes configurar un rol IAM asumido para tu cuenta de Atlas para usarlo con la API de administración de Atlas o la interfaz de usuario de Atlas si tienes los siguientes requisitos:
Project Owner rol. Atlas solo admite acceso unificado para AWS.
Puedes usar Atlas Kubernetes Operator para configurar el acceso unificado para un rol de AWS IAM en el AtlasProject Recurso personalizado.
Importante
Si operas Atlas Kubernetes Operator bajo un modelo CRD independiente, no puedes configurar la autenticación de AWS IAM usando atlasProject parámetros. Para configurar la autenticación de AWS IAM directamente para tu proyecto de Atlas, consulta Configura la autenticación con AWS IAM.
Requisitos previos
Necesita la siguiente llave pública de API, llave privada de API y la información del Identificador de la Organización para configurar el acceso de Atlas Kubernetes Operator a Atlas.
Si deseas que el Atlas Kubernetes Operator cree un nuevo Proyecto de Atlas, otorga acceso programático a una organización. Si tu organización requiere una lista de acceso IP para la API de administración de Atlas, también deberás configurar la lista de acceso a la API.
Importante
Debes asignar la clave API al Organization Project Creator rol en la organización o superior.
Si deseas trabajar con un proyecto Atlas existente, Añadir acceso al proyecto desde un proyecto. Si tu organización requiere una lista de acceso IP para la API de Administración de Atlas, también debes configurar la lista de acceso a la API.
Importante
Debe asignar al clave API el rol de proyecto Project Owner.
Para saber más, consulta Configura el acceso a Atlas.
Procedimiento
Agrega los campos spec.cloudProviderIntegrations al recurso personalizado AtlasProject.
Especifique un marcador de posición de valor vacío dentro del especificación.integracionesProveedorDeNube.arnRolAsumidoIam parámetro del
AtlasProjectCustom recurso.Especifica
AWSdentro de spec.cloudProviderIntegrations.providerName parámetro delAtlasProjectRecurso personalizado.
Ejemplo:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Project projectIpAccessList: - ipAddress: "192.0.2.15" comment: "IP address for Application" cloudProviderIntegrations: - providerName: "AWS" iamAssumedRoleArn: "" EOF
Importante
Completa todo este procedimiento para configurar el rol del marcador de posición de valor vacío antes de agregar cualquier rol de acceso adicional a tu recurso personalizado AtlasProject.
Recuperar el/la atlasAWSAccountArn y el/la atlasAssumedRoleExternalId del proyecto.
Ejecute el comando para recuperar el
atlasAWSAccountArn, que necesitarás para los siguientes pasos.kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations.atlasAWSAccountArn.type}' arn:aws:iam::198765432109:root Ejecute el comando para recuperar el
atlasAssumedRoleExternalId, que necesitarás para los siguientes pasos.kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations.atlasAssumedRoleExternalId.type}' 1a234b56-c789-0d12-345e-67f89012345a
Modifica tu política de confianza de rol de AWS IAM.
Puedes usar un rol de IAM existente o crear un nuevo rol de IAM para acceso unificado.
Modifica la política de confianza para tu rol de AWS IAM usando la siguiente política de confianza personalizada. Reemplace las líneas destacadas con los valores que recuperó en un paso anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] }
Crea el rol de AWS IAM </svg utilizando la siguiente política de confianza personalizada. Sustituya las líneas resaltadas con los valores que recuperó en un paso anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] }
Se debe autorizar el acceso del rol IAM mediante el operador Atlas Kubernetes.
Reemplace el marcador de valor vacío dentro del spec.cloudProviderIntegrations.iamAssumedRoleArn parámetro del AtlasProject recurso personalizado con el rol IAM de AWS ARN del paso anterior.
Ejemplo:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Project projectIpAccessList: - ipAddress: "192.0.2.15" comment: "IP address for Application" cloudProviderIntegrations: - providerName: "AWS" iamAssumedRoleArn: "arn:aws:iam::123456789012:role/aws-service-role/support.amazonaws.com/myRole" EOF
Verifica el estado de la cloudProviderIntegrations.
Ejecuta el comando para recuperar el estado:
kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations}' Verifica el estado de
READY.Si el estado es
CREATED, Atlas creó el rol, pero usted no lo ha autorizado en AWS.Si el estado es
EMPTY_ARN, Atlas creó el rol, pero usted no ha especificado elspec.cloudProviderIntegrations.iamAssumedRoleArn.Si el estado es
READY, Atlas ha creado el rol y lo has autorizado dentro de AWS.