Algumas funcionalidades do Atlas , incluindo Data Federation e Encryption at Rest autenticam com AWS IAM roles. Quando o Atlas acessa serviços AWS, ele assume uma role IAM.
You can set up an assumed IAM role for your Atlas account to use with the Atlas Administration API or Atlas UI if you have the Project Owner role. Atlas supports unified access only for AWS.
Você pode usar o Atlas Kubernetes Operator para configurar o acesso unificado para uma função do AWS IAM no Recurso Personalizado AtlasProject.
Importante
If you operate Atlas Kubernetes Operator under an independent CRD model, you cannot configure AWS IAM authentication using atlasProject parameters. To configure AWS IAM authentication for your Atlas project directly, please see Set Up Authentication with AWS IAM.
Pré-requisitos
Você precisa das seguintes informações da chave de API pública, chave de API privada e ID da organização para configurar o acesso do Atlas Kubernetes Operator ao Atlas.
Se você quiser que o Atlas Kubernetes Operator crie um novo projeto do Atlas , concedaacesso programático a uma organização. Se sua organização exigir uma lista de acesso IP para a Atlas Administration API, você também deverá configurar a lista de acesso da API.
Importante
Você deve atribuir a chave API ao role da organização Organization Project Creator ou superior.
Se você quiser trabalhar com um projeto Atlas existente, adicione acesso a um projeto. Se sua organização exigir uma lista de acesso IP para a Atlas Administration API, você também deverá configurar a lista de acesso da API.
Importante
Você deve atribuir à chave de API ao role de projeto Project Owner .
Você também pode usar contas de serviço como alternativa às chaves de API.
Para saber mais, consulte Configurar Acesso ao Atlas.
Procedimento
Adicione os campos spec.cloudProviderIntegrations ao recurso personalizado AtlasProject.
Especifique um espaço reservado de valor vazio dentro do spec.cloudProviderIntegrations.iamAssumedRoleArn
AtlasProjectdo recurso personalizado.Especifique
AWSdentro do spec.cloudProviderIntegrations.providerNameAtlasProjectdo recurso personalizado.
Exemplo:
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
Conclua todo este procedimento para configurar o papel para o espaço reservado de valor vazio antes de adicionar quaisquer papéis de acesso adicionais ao seu recurso personalizado do AtlasProject .
Recupere os atlasAWSAccountArn e atlasAssumedRoleExternalId do projeto.
Execute o comando para recuperar o
atlasAWSAccountArn, que você precisa para as próximas etapas.kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations.atlasAWSAccountArn.type}' arn:aws:iam::198765432109:root Execute o comando para recuperar o
atlasAssumedRoleExternalId, que você precisa para as próximas etapas.kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations.atlasAssumedRoleExternalId.type}' 1a234b56-c789-0d12-345e-67f89012345a
Modifique sua política de confiança de role do AWS IAM.
Você pode usar uma role IAM existente ou criar uma nova role IAM para acesso unificado.
Modifique a política de confiança do seu role do Amazon Web Services IAM usando a seguinte política de confiança personalizada. Substitua as linhas destacadas pelos valores que você recuperou em uma etapa anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] }
Crie a função IAM do Amazon Web Services usando a seguinte política de confiança personalizada. Substitua as linhas destacadas pelos valores que você recuperou em uma etapa anterior.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"<atlasAWSAccountArn>" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"<atlasAssumedRoleExternalId>" } } } ] }
Autorize o acesso da função do IAM usando o Atlas Kubernetes Operator.
Substitua o placeholder de valor vazio dentro do spec.cloudProviderIntegrations.iamAssumedRoleArn parâmetro do AtlasProject Recurso personalizado com o Amazon Web Services ARN da função IAM da etapa anterior.
Exemplo:
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 o status do cloudProviderIntegrations.
Execute o comando para recuperar o status:
kubectl get atlasprojects my-project -o=jsonpath='{.status.cloudProviderIntegrations}' Verifique o status
READY.Se o status for
CREATED, o Atlas criou o role, mas você não o autorizou na Amazon Web Services.Se o status for
EMPTY_ARN, o Atlas criou o role, mas você não especificou ospec.cloudProviderIntegrations.iamAssumedRoleArn.Se o status for
READY, o Atlas criou a role e você a autorizou na Amazon Web Services.