

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为托管的 Amazon Bedrock 知识库创建服务角色
<a name="kb-managed-permissions"></a>

要将自定义角色用于托管知识库，而不是 Amazon Bedrock 自动创建的角色，请按照[创建角色中的步骤创建 IAM 角色并附加以下权限，以向 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)委派权限。为了安全起见，请仅添加必要的权限。

**注意**  
使用服务角色时，不能在多个角色之间共享策略。
+ 信任关系
+ 对 Amazon Bedrock 基础模型的访问权限
+ 访问存储数据所在的数据来源
+ （如果您配置多模式存储目的地）访问您的多模式存储桶

**Topics**
+ [信任关系](#kb-managed-permissions-trust)
+ [访问 Amazon Bedrock 模型的权限](#kb-managed-permissions-access-models)
+ [您的多式联运存储目的地的权限](#kb-managed-permissions-multimodal-storage)
+ [访问数据来源的权限](#kb-managed-permissions-access-ds)

## 信任关系
<a name="kb-managed-permissions-trust"></a>

以下策略允许 Amazon Bedrock 担任此角色，并创建和管理知识库。您可以使用一个或多个全局条件上下文键来限制权限的范围。有关更多信息，请参阅 [AWS 全局条件上下文键](IAM/latest/UserGuide/reference_policies_condition-keys.html)。将 `aws:SourceAccount` 值设置为您的账户 ID。使用 `ArnEquals` 或 `ArnLike` 条件将范围限制为特定的知识库。

**注意**  
出于安全考虑，最佳做法是在创建后将其替换为特定的知识库 ID。{{\*}}

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{{123456789012}}"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:knowledge-base/{{*}}"
                }
            }
        }
    ]
}
```

------

## 访问 Amazon Bedrock 模型的权限
<a name="kb-managed-permissions-access-models"></a>

附加以下策略，以向角色提供使用 Amazon Bedrock 模型嵌入源数据的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:ListFoundationModels",
                "bedrock:ListCustomModels"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/amazon.titan-embed-text-v1",
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/cohere.embed-english-v3",
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/cohere.embed-multilingual-v3"
            ]
        }
    ]
}
```

------

如果您使用TwelveLabs Marengo Embed 3.0嵌入模型，则知识库会同步和异步调用该模型，因此角色需要两者的权限。附上以下语句，将{{${Region}}}和{{${AccountId}}}替换为知识库的和账户 ID{{${InferenceProfileId}}}，以及您使用的推理配置文件的 ID。 AWS 区域 `foundation-model`ARN `*` 用于该区域，而不是特定区域。这是必需的，因为跨区域推理配置文件可以将模型调用路由到其任何成员中的基础模型。 AWS 区域

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BedrockInvokeModelStatement",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/twelvelabs.marengo-embed-3-0-v1:0",
                "arn:aws:bedrock:{{${Region}}}:{{${AccountId}}}:inference-profile/{{${InferenceProfileId}}}",
                "arn:aws:bedrock:{{${Region}}}:{{${AccountId}}}:async-invoke/*"
            ]
        },
        {
            "Sid": "BedrockGetAsyncInvokeStatement",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAsyncInvoke"
            ],
            "Resource": [
                "arn:aws:bedrock:{{${Region}}}:{{${AccountId}}}:async-invoke/*"
            ]
        }
    ]
}
```

**注意**  
前面的策略包括[推理配置文件 ](inference-profiles-support.md) ARN，因为在某些策略中， AWS 区域 您必须在创建知识库时为TwelveLabs Marengo Embed 3.0模型指定推理配置文件。在这些地区，知识库同时使用推理配置文件和按需模型，因此角色需要同时访问这两个模型。如果您不使用推理配置文件，则可以从列表中省略推理配置文件 ARN。`Resource`  
要确定您使用的区域是否需要推理配置文件，请参阅[原生多模态处理](kb-managed-native-multimodal.md)。

## 您的多式联运存储目的地的权限
<a name="kb-managed-permissions-multimodal-storage"></a>

多模式存储目标是 Amazon S3 存储桶，用于处理多模式内容并将其提取到您的知识库中。Amazon Bedrock 知识库会在您的存储桶中创建`aws/`前缀文件夹，以便于访问。

附加以下策略，为角色提供读取、写入和删除此内容的权限。{{amzn-s3-demo-bucket}}替换为您的多式联运存储桶的名称。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3MultimodalStorageListStatement",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
            ]
        },
        {
            "Sid": "S3MultimodalStorageObjectStatement",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ]
        }
    ]
}
```

## 访问数据来源的权限
<a name="kb-managed-permissions-access-ds"></a>

从以下数据来源中进行选择，为该角色附加必要的权限。

**Topics**
+ [访问 Amazon S3 中数据来源的权限](#kb-managed-permissions-access-s3)
+ [访问您的 Confluence 数据来源的权限](#kb-managed-permissions-access-confluence)
+ [访问你的 Microsoft SharePoint 数据源的权限](#kb-managed-permissions-access-sharepoint)
+ [访问您的 Web Crawler 数据源的权限](#kb-managed-permissions-access-webcrawler)
+ [访问你的 Microsoft OneDrive 数据源的权限](#kb-managed-permissions-access-onedrive)
+ [访问您的 Google 云端硬盘数据源的权限](#kb-managed-permissions-access-googledrive)

### 访问 Amazon S3 中数据来源的权限
<a name="kb-managed-permissions-access-s3"></a>

如果您的数据来源是 Amazon S3，请附加以下策略，以向角色提供访问您将作为数据来源进行连接的 S3 存储桶的权限。

如果您使用密 AWS KMS 钥加密了数据源，请按照中的步骤向角色授予解密密钥的权限。[解密你的权限 AWS KMS Amazon S3 中数据源的密钥](encryption-kb.md#encryption-kb-ds)

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ListBucketStatement",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "S3GetObjectStatement",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        }
    ]
}
```

------

### 访问您的 Confluence 数据来源的权限
<a name="kb-managed-permissions-access-confluence"></a>

附加以下策略，以向角色提供访问 Confluence 的权限。

**注意**  
只有在使用带有刷新令牌的 OAuth 2.0 身份验证时才需要 `secretsmanager:PutSecretValue`。  
Confluence OAuth2.0 ** 访问**令牌的默认到期时间为 60 分钟。如果此令牌在您的数据来源同步（同步作业）时过期，Amazon Bedrock 将使用提供的**刷新**令牌来重新生成此令牌。此重新生成操作会刷新访问令牌和刷新令牌。为了保持令牌从当前同步任务更新到下一个同步任务，Amazon Bedrock 需要您的密钥凭证的 write/put 权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue"
        ],
        "Resource": [
            "arn:aws:secretsmanager:{{${Region}}}:{{${AccountId}}}:secret:{{${SecretId}}}"
        ]
    }]
}
```

### 访问你的 Microsoft SharePoint 数据源的权限
<a name="kb-managed-permissions-access-sharepoint"></a>

附上以下策略，为角色提供访问 Microsoft 的权限 SharePoint。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue"
        ],
        "Resource": [
            "arn:aws:secretsmanager:{{${Region}}}:{{${AccountId}}}:secret:{{${SecretId}}}"
        ]
    }]
}
```

**注意**  
如果您使用基于证书的身份验证 (X.509) 并将证书存储在 Amazon S3 存储桶中，则还必须向存储证书文件（.pfx 或 .pem）的存储桶和密钥的服务角色授予`s3:GetObject`权限。以下示例显示了所需的额外政策声明：  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::{{${CertificateBucketName}}}/{{${CertificateKeyPath}}}"
        ]
    }]
}
```

### 访问您的 Web Crawler 数据源的权限
<a name="kb-managed-permissions-access-webcrawler"></a>

附加以下策略，为角色提供通过 Web Crawler 访问网站的权限。如果您的网站需要身份验证，请包括访问存储您的凭据的 AWS Secrets Manager 密钥的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue"
        ],
        "Resource": [
            "arn:aws:secretsmanager:{{${Region}}}:{{${AccountId}}}:secret:{{${SecretId}}}"
        ]
    }]
}
```

### 访问你的 Microsoft OneDrive 数据源的权限
<a name="kb-managed-permissions-access-onedrive"></a>

附上以下策略，为角色提供访问 Microsoft 的权限 OneDrive。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue"
        ],
        "Resource": [
            "arn:aws:secretsmanager:{{${Region}}}:{{${AccountId}}}:secret:{{${SecretId}}}"
        ]
    }]
}
```

### 访问您的 Google 云端硬盘数据源的权限
<a name="kb-managed-permissions-access-googledrive"></a>

附上以下政策，为角色提供访问 Google 云端硬盘的权限。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue"
        ],
        "Resource": [
            "arn:aws:secretsmanager:{{${Region}}}:{{${AccountId}}}:secret:{{${SecretId}}}"
        ]
    }]
}
```