Algunas características de Atlas, incluidas Data Federation y Cifrado en reposo, autenticarse con Roles de AWS 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:
Rol Project Owner. Atlas admite acceso unificado solo para AWS.
Puede utilizar Atlas Kubernetes Operator para configurar el acceso unificado para una función de AWS IAM en 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
Modifique su política de confianza del rol de AWS IAM.
Puedes usar un rol de IAM existente o crear un nuevo rol de IAM para acceso unificado.
Modifique la política de confianza de su rol de AWS IAM con la siguiente política de confianza personalizada. Reemplace las líneas resaltadas con los valores obtenidos 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
Verifique el estado cloudProviderIntegrations del.
Ejecuta el comando para recuperar el estado:
kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations}' Verifica el estado de
READY.Si el estado
CREATEDes, Atlas creó el rol pero no lo ha autorizado dentro de AWS.Si el estado es
EMPTY_ARN, Atlas creó el rol, pero usted no ha especificado elspec.cloudProviderIntegrations.iamAssumedRoleArn.Si el estado
READYes, Atlas ha creado el rol y usted lo ha autorizado dentro de AWS.