Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta AWS - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta AWS

Criado por Helge Aufderheide () AWS

Ambiente: produção

Tecnologias: DevOps; Análise; Aprendizado de máquina e IA; Gestão e governança

AWSserviços: AWS CodeCommit; AWS Identity and Access Management; Amazon SageMaker

Resumo

Aviso: não AWS CodeCommit está mais disponível para novos clientes. Os clientes existentes do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

Esse padrão mostra como conceder às instâncias de SageMaker notebooks e aos usuários da Amazon acesso temporário a um AWS CodeCommit repositório que está em outra AWS conta. Esse padrão também mostra como você pode conceder permissões granulares para ações específicas que cada entidade pode realizar em cada repositório.

As organizações geralmente armazenam CodeCommit repositórios em uma AWS conta diferente da conta que hospeda seu ambiente de desenvolvimento. Essa configuração de várias contas ajuda a controlar o acesso aos repositórios e reduz o risco de sua exclusão acidental. Para conceder essas permissões entre contas, é uma prática recomendada usar as funções AWS Identity and Access Management (IAM). Em seguida, IAM identidades predefinidas em cada AWS conta podem assumir temporariamente as funções para criar uma cadeia de confiança controlada em todas as contas.

Observação: você pode aplicar um procedimento semelhante para conceder a outras IAM identidades acesso entre contas a um CodeCommit repositório. Para obter mais informações, consulte Configurar o acesso entre contas a um AWS CodeCommit repositório usando funções no Guia do AWS CodeCommit usuário.

Pré-requisitos e limitações

Pré-requisitos

  • Uma AWS conta ativa com um CodeCommit repositório (conta A)

  • Uma segunda AWS conta ativa com uma instância de SageMaker notebook (conta B)

  • Um AWS usuário com permissões suficientes para criar e modificar IAM funções na conta A

  • Um segundo AWS usuário com permissões suficientes para criar e modificar IAM funções na conta B

Arquitetura

O diagrama a seguir mostra um exemplo de fluxo de trabalho para conceder a uma instância do SageMaker notebook e aos usuários em uma AWS conta acesso cruzado de contas a um CodeCommit repositório:

Fluxo de trabalho para acesso entre contas ao CodeCommit

O diagrama mostra o seguinte fluxo de trabalho:

  1. A função AWS do usuário e a função da instância do SageMaker notebook na conta B assumem um perfil nomeado.

  2. A política de permissões do perfil nomeado especifica uma função de CodeCommit acesso na conta A que o perfil então assume.

  3. A política de confiança da função de CodeCommit acesso na conta A permite que o perfil nomeado na conta B assuma a função de CodeCommit acesso.

  4. A política de IAM permissões do CodeCommit repositório na conta A permite que a função de CodeCommit acesso acesse o CodeCommit repositório.

Pilha de tecnologia

  • CodeCommit

  • Git

  • IAM

  • pip

  • SageMaker

Ferramentas

  • AWS CodeCommité um serviço de controle de versão que ajuda você a armazenar e gerenciar repositórios Git de forma privada, sem precisar gerenciar seu próprio sistema de controle de origem.

  • AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • O Git é um sistema distribuído de controle de versões para rastrear alterações no código-fonte durante o desenvolvimento do software.

  • git-remote-codecommité um utilitário que ajuda você a enviar e extrair código de CodeCommit repositórios estendendo o Git.

  • pip é o instalador de pacotes para Python. Você pode usar o pip para instalar pacotes do Python Package Index e outros índices.

Práticas recomendadas

Ao definir permissões com IAM políticas, certifique-se de conceder somente as permissões necessárias para realizar uma tarefa. Para obter mais informações, consulte Aplicar permissões de privilégios mínimos na documentação. IAM

Ao implementar esse padrão, certifique-se de fazer o seguinte:

  • Confirme se IAM os princípios têm somente as permissões necessárias para realizar ações específicas e necessárias em cada repositório. Por exemplo, é recomendável permitir que IAM os princípios aprovados enviem e mesclem alterações em ramificações específicas do repositório, mas somente solicitem mesclagens em ramificações protegidas.

  • Confirme se IAM os princípios recebem IAM funções diferentes com base em suas respectivas funções e responsabilidades em cada projeto. Por exemplo, um desenvolvedor terá permissões de acesso diferentes das de um gerente de lançamento ou AWS administrador.

Épicos

TarefaDescriçãoHabilidades necessárias

Configure a função de CodeCommit acesso e a política de permissões.

Nota: Para automatizar o processo de configuração manual documentado neste épico, você pode usar um AWS CloudFormation modelo.

Na conta que contém o CodeCommit repositório (conta A), faça o seguinte:

  1. Crie uma IAM função que possa ser assumida pela função da instância do SageMaker notebook na conta B.

  2. Crie uma IAM política que conceda acesso ao repositório e anexe a política à função. Somente para fins de teste, escolha a política AWSCodeCommitPowerUserAWSgerenciada. Essa política concede todas CodeCommit as permissões, exceto a capacidade de excluir recursos.

  3. Modifique a política de confiança da função para que a conta B seja listada como uma entidade confiável.

Importante: antes de mover essa configuração para seu ambiente de produção, é uma prática recomendada escrever sua própria IAM política que aplique permissões de privilégios mínimos. Para obter mais informações, consulte a seção Informações adicionais desse padrão.

GeralAWS, AWS DevOps

Conceda à função da instância do SageMaker notebook na conta B permissões para assumir a função de CodeCommit acesso na conta A.

Na conta que contém a IAM função da instância do SageMaker notebook (conta B), faça o seguinte:

  1. Crie uma IAM política que permita que uma IAM função ou usuário assuma a função de CodeCommit acesso na conta A.

    Exemplo de política de IAM permissões que permite que uma IAM função ou usuário assuma uma função entre contas

    {   "Version": "2012-10-17",   "Statement": [       {     "Sid": "VisualEditor0",     "Effect": "Allow",     "Action": "sts:AssumeRole",     "Resource": "arn:aws:iam:::accountA_ID:role/accountArole_ID"   } }
  2. Anexe a política à função da instância do seu SageMaker notebook na conta B.

  3. Faça com que a função da instância do SageMaker notebook na conta B assuma a função de CodeCommit acesso na conta A.

Observação: Para visualizar o Amazon Resource Name (ARN) do seu repositório, consulte Exibir detalhes do CodeCommit repositório no Guia do AWS CodeCommit usuário.

GeralAWS, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Configure um perfil de usuário na instância do AWS SageMaker notebook para assumir a função na conta A.

Importante: verifique se você tem a versão mais recente da interface de linha de AWS comando (AWSCLI) instalada.

Na conta que contém a instância do SageMaker notebook (conta B), faça o seguinte:

  1. Faça login no AWS Management Console e abra o SageMaker console.

  2. Acesse sua instância de SageMaker notebook. A interface do Jupyter será aberta.

  3. Escolha Novo e, em seguida, escolha Terminal. Uma nova janela de terminal é aberta em seu ambiente Jupyter.

  4. Navegue até o arquivo ~/.aws/config da instância do SageMaker notebook. Em seguida, adicione um perfil de usuário ao arquivo inserindo a seguinte declaração:

------.aws/config-------------- [profile remoterepouser] role_arn = arn:aws:iam::<ID of Account A>:role/<rolename> role_session_name = remoteaccesssession region = eu-west-1 credential_source = Ec2InstanceMetadata ----------------------------------
GeralAWS, AWS DevOps

Instale o git-remote-codecommit utilitário.

Siga as instruções na Etapa 2: Instalar git-remote-codecommit no Guia AWS CodeCommit do usuário.

Cientista de dados
TarefaDescriçãoHabilidades necessárias

Acesse o CodeCommit repositório usando os comandos Git ou. SageMaker

Para usar Git

IAMdiretores que assumem a função da instância do SageMaker notebook na conta B agora podem executar comandos Git para acessar CodeCommit o repositório na conta A. Por exemplo, os usuários podem executar comandos git clone comogit pull, e. git push

Para obter instruções, consulte Conectar-se a um AWS CodeCommit repositório no Guia do AWS CodeCommit usuário.

Para obter informações sobre como usar o Git com CodeCommit, consulte Introdução ao Git AWS CodeCommit no Guia do AWS CodeCommit Usuário.

Para usar SageMaker

Para usar o Git a partir do SageMaker console, você deve permitir que o Git recupere as credenciais do seu repositório. CodeCommit Para obter instruções, consulte Associar um CodeCommit repositório em uma AWS conta diferente a uma instância do notebook na SageMaker documentação.

Git, console bash

Recursos relacionados

Mais informações

Restringindo CodeCommit permissões para ações específicas

Para restringir as ações que um IAM diretor pode realizar no CodeCommit repositório, modifique as ações permitidas na política de CodeCommit acesso.

Para obter mais informações sobre CodeCommit API operações, consulte a referência de CodeCommit permissões no Guia AWS CodeCommit do usuário.

Observação: você também pode editar a política AWSCodeCommitPowerUserAWSgerenciada de acordo com seu caso de uso.

Restringindo CodeCommit permissões para repositórios específicos

Para criar um ambiente multilocatário em que mais de um repositório de código possa ser acessado somente por usuários específicos, faça o seguinte:

  1. Crie várias funções de CodeCommit acesso na conta A. Em seguida, configure a política de confiança de cada função de acesso para permitir que usuários específicos na conta B assumam a função.

  2. Restrinja quais repositórios de código cada função pode assumir adicionando uma condição de “Recurso” à política de cada função de CodeCommit acesso.

Exemplo de condição de “Recurso” que restringe o acesso de um IAM principal a um repositório específico CodeCommit

"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]

Observação: para ajudar a identificar e diferenciar vários repositórios de código na mesma AWS conta, você pode atribuir prefixos diferentes aos nomes dos repositórios. Por exemplo, você pode nomear repositórios de código com prefixos que se alinham a diferentes grupos de desenvolvedores, como myproject-subproject1-repo1 e myproject-subproject2-repo1. Em seguida, você pode criar uma IAM função para cada grupo de desenvolvedores com base nos prefixos atribuídos. Por exemplo, você pode criar um perfil chamado myproject-subproject1-repoaccess e conceder a ele acesso a todos os repositórios de código que incluem o prefixo myproject-subproject1.

Exemplo de condição de “Recurso” que se refere a um repositório de código ARN que inclui um prefixo específico

"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*