Wie gewähre ich kontoübergreifenden Zugriff auf die Amazon Bedrock-API?

Lesedauer: 3 Minute
0

Ich möchte die Amazon Bedrock-API für mehrere AWS-Konten verwenden.

Kurzbeschreibung

Wenn du die Amazon Bedrock-API kontoübergreifend verwendest, verwalte die Berechtigungen für den API-Client in einem Konto und hoste die Workloads in anderen Konten.

Bevor du den kontoübergreifenden Zugriff für die Amazon Bedrock-API einrichtest, stelle sicher, dass du auf die Basismodelle zugreifen kannst. Informationen zum Anfordern des Zugriffs findest du unter Modellzugriff hinzufügen.

Hinweis: Informationen zu kontoübergreifenden bewährten Methoden findest du unter Bewährte Sicherheitsmethoden in AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement).

Lösung

In der folgenden Auflösung enthält Konto A die Basismodelle. Konto B enthält das Amazon SageMaker-Notebook, das die Amazon Bedrock-API in Konto A aufruft, um auf die Basismodelle zuzugreifen.

Konto A

Gehe wie folgt vor, um eine IAM-Rolle zu erstellen, die Zugriff auf Amazon Bedrock bietet:

  1. Öffne die IAM-Konsole.
  2. Erstelle eine IAM-Rolle für Konto A.
  3. Stelle sicher, dass die IAM-Rolle über die AmazonBedrockFullAccess-Richtlinie verfügt, um den Zugriff auf Amazon Bedrock zu ermöglichen.
  4. Füge die Berechtigungen zum Aufrufen des SageMaker-Notebooks in Konto B hinzu:

    {    
       "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"       
          }  
       ]  
    }  

Konto B

Gehe wie folgt vor, um die Rolle in Konto A zu übernehmen:

  1. Öffne die IAM-Konsole.
  2. Erstelle eine IAM-Rolle für das SageMaker-Notebook, das im Konto ausgeführt werden soll.
  3. Stelle sicher, dass die IAM-Richtlinie zulässt, dass die Rolle in Konto B die Rolle in Konto A übernimmt:
        {  
            "Version": "2012-10-17",  
                "Statement": [  
                    {  
                        "Effect": "Allow",  
                        "Action": [  
                            "sts:AssumeRole"  
                        ],  
                        "Resource": [  
                            "arn:aws:iam::`<Account A ID>`:role/RoleA"   
                        ]  
                    }  
                ]  
         }

Nach der Konfiguration verwendet die Rolle in Konto B temporäre Boto3-Anmeldeinformationen, um die Rolle in Konto A zu übernehmen.

Testen des Einrichtens von Konto B 

Verwende die Rolle, die der IAM-Richtlinie in Konto B angefügt ist, um die folgende Zelle auf einem beliebigen SageMaker-Notebook auszuführen:

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')

Der Amazon Bedrock-Client kann jetzt die temporären Anmeldeinformationen der Rolle in Konto A verwenden, um APIs aufzurufen.

Bewährte Methoden

Wenn du die Amazon Bedrock-API kontoübergreifend verwendest, wende die folgenden bewährten Methoden an:

  • Überprüfe die AWS CloudTrail-Protokolle auf Fehler und Verifizierungen. Die Protokolle zeigen die AssumeRole-Ereignisse von AWS Security Token Service (STS) in Konto B und die Amazon Bedrock-Ereignisse in Konto A.
  • Die Standarddauer der übernommenen Rolle beträgt 1 Stunde. Du kannst jedoch den Parameter DurationSeconds verwenden, um die Dauer zu ändern. Die Dauer darf die maximale Sitzungsdauer der Rolle nicht überschreiten.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten