

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

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

要使用托管知识库的自定义角色而不是 Amazon Bedrock 自动创建的角色，请按照创建角色[向 AWS 服务委派权限中的步骤创建一个 IAM 角色并附加以下权限](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-access-ds)

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

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

**注意**  
出于安全考虑，最佳做法是在创建特定知识库 ID 之后将其替换为特定的知识库 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"
            ]
        }
    ]
}
```

------

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

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

**Topics**
+ [访问 Amazon S3 中数据来源的权限](#kb-managed-permissions-access-s3)
+ [访问您的 Confluence 数据来源的权限](#kb-managed-permissions-access-confluence)
+ [访问你的微软 SharePoint 数据源的权限](#kb-managed-permissions-access-sharepoint)
+ [访问您的 Web Crawler 数据源的权限](#kb-managed-permissions-access-webcrawler)
+ [访问你的微软 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}}}"
        ]
    }]
}
```

### 访问你的微软 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}}}"
        ]
    }]
}
```

### 访问你的微软 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}}}"
        ]
    }]
}
```