Como faço para conceder acesso entre contas à API Amazon Bedrock?

3 minuto de leitura
0

Quero usar a API Amazon Bedrock em várias contas da AWS.

Breve descrição

Ao usar a API Amazon Bedrock entre as contas, você gerencia as permissões para o cliente da API em uma conta e hospeda os workloads em outras contas.

Antes de configurar o acesso entre contas da sua API Amazon Bedrock, certifique-se de que é possível acessar os modelos básicos. Para solicitar acesso, consulte Adicionar acesso ao modelo.

Observação: para informações sobre as práticas recomendadas entre contas, consulte Práticas recomendadas de segurança no AWS Identity and Access Management (AWS IAM).

Resolução

Na resolução a seguir, a conta A contém os modelos básicos. A conta B contém o notebook Amazon SageMaker que invoca a API Amazon Bedrock na conta A para acessar os modelos básicos.

Conta A

Para criar um perfil do IAM que forneça acesso ao Amazon Bedrock, conclua as seguintes etapas:

  1. Abra o console do IAM.
  2. Crie um perfil do IAM para a conta A.
  3. Certifique-se de que o perfil do IAM inclua a política AmazonBedRockFullAccess para permitir o acesso ao Amazon Bedrock.
  4. Adicione as permissões para invocar o notebook SageMaker na conta B:

    {    
       "Version":"2012-10-17",  
       "Statement":[    
          {    
             "Effect":"Allow",  
             "Principal":{    
                "Service":[    
                   "sagemaker.amazonaws.com",  
                   "events.amazonaws.com",  
                   "bedrock.amazonaws.com"  
                ],  
                "AWS":[    
                   "arn:aws:iam::`<Account B ID>`:role/RoleB"  
                ]  
             },  
             "Action":"sts:AssumeRole"       
          }  
       ]  
    }  

Conta B

Para assumir o perfil na conta A, conclua as seguintes etapas:

  1. Abra o console do IAM.
  2. Crie um perfil do IAM para que o notebook SageMaker seja executado na conta.
  3. Certifique-se de que a política do IAM permita que o perfil na conta B assuma o perfil na conta A:
        {  
            "Version": "2012-10-17",  
                "Statement": [  
                    {  
                        "Effect": "Allow",  
                        "Action": [  
                            "sts:AssumeRole"  
                        ],  
                        "Resource": [  
                            "arn:aws:iam::`<Account A ID>`:role/RoleA"   
                        ]  
                    }  
                ]  
         }

Após a configuração, o perfil na conta B usa credenciais temporárias do Boto3 para assumir o perfil na conta A.

Testar a configuração da conta B

Use o perfil vinculado à política do IAM na conta B para executar a seguinte célula em um notebook do SageMaker:

import boto3  

# ARN of Role A to assume  
role_to_assume = 'arn:aws:iam::`<Account A ID>`:role/RoleA'    

# Use STS to assume role  
credentials = boto3.client('sts').assume_role(  
    RoleArn=role_to_assume,  
    RoleSessionName='RoleBSession'  
)['Credentials']  

# Create Bedrock client with temporary credentials  
bedrock_session = boto3.session.Session(  
    aws_access_key_id=credentials['AccessKeyId'],  
    aws_secret_access_key=credentials['SecretAccessKey'],  
    aws_session_token=credentials['SessionToken']  
)  

bedrock = bedrock_session.client('bedrock-runtime')

Agora, o cliente Amazon Bedrock pode usar as credenciais temporárias do perfil na conta A para chamar APIs.

Práticas recomendadas

Ao usar a API Amazon Bedrock entre as contas, aplique as seguintes práticas recomendadas:

  • Confirme se há erros e verificações nos logs do AWS CloudTrail. Os logs mostram os eventos AssumeRole do AWS Security Token Service (STS) na conta B e os eventos Amazon Bedrock na conta A.
  • A duração padrão do perfil assumido é de 1 hora. No entanto, é possível usar o parâmetro DurationSeconds para modificar a duração. A duração não pode exceder a duração máxima da sessão do perfil.
AWS OFICIAL
AWS OFICIALAtualizada há 10 meses