Algunas funciones de Atlas, como Data Federation y Cifrado en reposo, se autentican con AWS roles IAM. Cuando Atlas accede a los servicios de AWS, asume un rol IAM.
Puede configurar un rol de IAM simulado para su cuenta de Atlas, para utilizar con la API de Administración de Atlas o la Interfaz de Usuario de Atlas si cuenta con el rol de Project Owner. Atlas solo admite un acceso unificado para AWS.
Puede utilizar Atlas Kubernetes Operator para establecer acceso unificado para un rol de AWS IAM en el AtlasProject Custom recurso.
Importante
Si ejecuta Atlas Kubernetes Operator bajo un modelo CRD independiente, no puede configurar la autenticación AWS IAM utilizando los parámetros atlasProject. Para configurar la autenticación de AWS IAM para tu proyecto de Atlas directamente, 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 a la clave API el rol organizacional Organization Project Creator 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.
También puede usar cuentas de servicio como alternativa a las claves de API.
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 AWS IAM.
Puedes utilizar un rol IAM existente o crear un nuevo rol IAM para un 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>" } } } ] }
Autoriza el acceso del rol IAM utilizando el operador Atlas Kubernetes.
Reemplazar el marcador de posición de valor vacío dentro de spec.cloudProviderIntegrations.iamAssumedRoleArn parámetro del AtlasProject Recurso Personalizado con el IAM rol 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 aún no lo habéis 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 usted lo ha autorizado dentro de AWS.