Come posso concedere l'accesso multi-account all'API Amazon Bedrock?

3 minuti di lettura
0

Desidero utilizzare l'API Amazon Bedrock su diversi account AWS.

Breve descrizione

Quando utilizzi l'API Amazon Bedrock su più account, gestisci le autorizzazioni per il client API in un account e ospiti i tuoi carichi di lavoro in altri account.

Prima di configurare l'accesso multi-account per la tua API Amazon Bedrock, assicurati di poter accedere ai modelli di fondazione. Per richiedere l'accesso, consulta Add model access (Aggiungi l'accesso al modello).

Nota: per informazioni sulle best practice in riferimento all'accesso multi-account, consulta Best practice per la sicurezza in IAM.

Risoluzione

Nella seguente risoluzione, l'account A contiene i modelli di fondazione. L'account B contiene il notebook Amazon SageMaker che invoca l'API Amazon Bedrock nell'account A per accedere ai modelli di fondazione.

Account A

Per creare un ruolo IAM che fornisca l'accesso ad Amazon Bedrock, completa i seguenti passaggi:

  1. Apri la console IAM.
  2. Crea un ruolo IAM per l'account A.
  3. Assicurati che il ruolo IAM abbia la policy AmazonBedrockFullAccess per consentire l'accesso ad Amazon Bedrock.
  4. Aggiungi le autorizzazioni per invocare il notebook SageMaker nell'account 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"       
          }  
       ]  
    }  

Account B

Per assumere il ruolo nell'account A, completa i seguenti passaggi:

  1. Apri la console IAM.
  2. Crea un ruolo IAM per il notebook SageMaker da eseguire nell'account.
  3. Assicurati che la policy IAM consenta al ruolo nell'account B di assumere il ruolo nell'account A:
        {  
            "Version": "2012-10-17",  
                "Statement": [  
                    {  
                        "Effect": "Allow",  
                        "Action": [  
                            "sts:AssumeRole"  
                        ],  
                        "Resource": [  
                            "arn:aws:iam::`<Account A ID>`:role/RoleA"   
                        ]  
                    }  
                ]  
         }

Dopo la configurazione, il ruolo nell'account B utilizza credenziali Boto3 temporanee per assumere il ruolo nell'account A.

Verifica la configurazione dall'account B

Utilizza il ruolo associato alla policy IAM nell'account B per eseguire la seguente cella su qualsiasi notebook 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')

Il client Amazon Bedrock può ora utilizzare le credenziali temporanee del ruolo nell'account A per invocare API.

Best practice

Quando utilizzi l'API Amazon Bedrock su più account, applica le seguenti best practice:

  • Controlla i log di AWS CloudTrail per eventuali errori e verifiche. I log mostrano gli eventi AssumeRole di Servizio di token di sicurezza AWS (AWS STS) nell'account B e gli eventi di Amazon Bedrock nell'account A.
  • La durata predefinita del ruolo assunto è di 1 ora. Tuttavia, è possibile utilizzare il parametro DurationSeconds per modificare la durata. La durata non può superare la durata massima della sessione del ruolo.