AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

Amazon Bedrock API へのクロスアカウントアクセスを許可する方法を教えてください。

所要時間2分
0

Amazon Bedrock API を複数の AWS アカウントで使用したいです。

簡単な説明

複数のアカウントで Amazon Bedrock API を使用する場合、1 つのアカウントで API クライアントのアクセス許可を管理し、別のアカウントでワークロードをホストします。

Amazon Bedrock API のクロスアカウントアクセスを設定する前に、基盤モデルにアクセスできることを確認してください。アクセスをリクエストするには、「モデルアクセスの追加」を参照してください。

注: クロスアカウントのベストプラクティスについては、「AWS Identity and Access Management (IAM) のセキュリティベストプラクティス」を参照してください。

解決策

次の解決策では、アカウント A に基盤モデルが含まれています。アカウント B には、アカウント A の Amazon Bedrock API を呼び出して基盤モデルにアクセスする Amazon SageMaker ノートブックが含まれています。

アカウント A

Amazon Bedrock へのアクセスを付与する IAM ロールを作成するには、次の手順を実行します。

  1. IAM コンソールを開きます。
  2. アカウント A の IAM ロールを作成します。
  3. IAM ロールに Amazon Bedrock へのアクセスを許可する AmazonBedrockFullAccess ポリシーが設定されていることを確認してください。
  4. アカウント B に SageMaker ノートブックを呼び出すアクセス許可を追加します。

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

アカウント B

アカウント A の役割を引き受けるには、次の手順を実行します。

  1. IAM コンソールを開きます。
  2. SageMaker ノートブックをアカウントで実行するための IAM ロールを作成します。
  3. IAM ポリシーで、アカウント B のロールがアカウント A のロールを引き継ぐことを許可していることを確認します。
        {  
            "Version": "2012-10-17",  
                "Statement": [  
                    {  
                        "Effect": "Allow",  
                        "Action": [  
                            "sts:AssumeRole"  
                        ],  
                        "Resource": [  
                            "arn:aws:iam::`<Account A ID>`:role/RoleA"   
                        ]  
                    }  
                ]  
         }

設定後、アカウント B のロールは一時的な Boto3 認証情報を使用してアカウント A のロールを引き継ぎます。

アカウント B からセットアップをテストする

アカウント B の IAM ポリシーにアタッチされているロールを使用して、任意の 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')

これで、Amazon Bedrock クライアントは、アカウント A のロールからの一時的な認証情報を使用して API を呼び出すことができます。

ベストプラクティス

Amazon Bedrock API を複数のアカウントで使用する場合は、次のベストプラクティスを適用してください。

  • AWS CloudTrail ログでエラーや検証を確認します。ログは、アカウント B の AWS Security Token Service (STS) の AssumeRole イベントと、アカウント A の Amazon Bedrock イベントを示します。
  • 引き受けたロールのデフォルト期間は 1 時間です。ただし、DurationSeconds パラメーターを使用すると期間を変更できます。期間は、ロールの最大セッション期間を超えることはできません。
AWS公式
AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ