Conceda às instâncias do SageMaker notebook acesso temporário a um CodeCommit repositório em outra conta da 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 da AWS

Criado por Helge Aufderheide (AWS)

Ambiente: produção

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

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

Resumo

Esse padrão mostra como conceder aos usuários e instâncias de SageMaker notebooks da Amazon acesso temporário a um CodeCommit repositório da AWS que está em outra conta da AWS. 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 conta da AWS 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 melhor prática usar perfis do Identity and Access Management (IAM) da AWS. Em seguida, identidades predefinidas do IAM em cada conta da AWS 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 acesso cruzado a outras identidades do IAM a um CodeCommit repositório. Para obter mais informações, consulte Configurar o acesso entre contas a um CodeCommit repositório da AWS usando funções no Guia CodeCommit do usuário da AWS.

Pré-requisitos e limitações

Pré-requisitos

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

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

  • Um usuário da AWS com permissões suficientes para criar e modificar perfis do IAM na conta A

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

Arquitetura

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

Fluxo de trabalho para acesso entre contas ao CodeCommit

O diagrama mostra o seguinte fluxo de trabalho:

  1. A função de usuário da AWS e a função de 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 permissões do IAM 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

  • CodeCommitA AWS é 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.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, 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 as políticas do IAM, certifique-se de conceder apenas as permissões necessárias para executar uma tarefa. Para obter mais informações, consulte Aplicar permissões de privilégios mínimos na documentação do IAM.

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

  • Confirme se os princípios do IAM 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 os princípios aprovados do IAM enviem e mesclem alterações em ramificações específicas do repositório, mas somente solicitem mesclagens em ramificações protegidas.

  • Confirme se os princípios do IAM recebem diferentes perfis do IAM 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 administrador da AWS.

Épicos

TarefaDescriçãoHabilidades necessárias

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

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

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

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

  2. Crie uma política do IAM que conceda acesso ao repositório e anexe a política à função. Somente para fins de teste, escolha a política gerenciada pela AWSCodeCommitPowerUserAWS. 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 política do IAM que aplique permissões de privilégios mínimos. Para obter mais informações, consulte a seção Informações adicionais desse padrão.

AWS geral, 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 função IAM da instância do SageMaker notebook (conta B), faça o seguinte:

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

    Exemplo de política de permissões do IAM que permite que um perfil do IAM ou usuário assuma um perfil 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 ver o Amazon Resource Name (ARN) do seu repositório, consulte CodeCommit Exibir detalhes do repositório no Guia do usuário da AWS CodeCommit .

AWS geral, AWS DevOps
TarefaDescriçãoHabilidades necessárias

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

Importante: verifique se você tem instalada a versão mais recente da AWS Command Line Interface (AWS CLI).

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 ----------------------------------
AWS geral, AWS DevOps

Instale o git-remote-codecommit utilitário.

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

Cientista de dados
TarefaDescriçãoHabilidades necessárias

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

Para usar Git

Os diretores do IAM que assumem a função da instância do SageMaker notebook na conta B agora podem executar comandos do 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 Conecte-se a um CodeCommit repositório da AWS no Guia do CodeCommit usuário da AWS.

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

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 conta diferente da AWS a uma instância de 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 diretor do IAM pode realizar no CodeCommit repositório, modifique as ações que são permitidas na política de CodeCommit acesso.

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

Observação: você também pode editar a política gerenciada AWSCodeCommitPowerUserda AWS 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 diretor do IAM 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 conta da AWS, 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 um perfil do IAM 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 ARN de repositório de código que inclui um prefixo específico

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