

# 为 RDS for Oracle 与 Amazon EFS 集成配置 IAM 权限
<a name="oracle-efs-integration.iam"></a>

默认情况下，Amazon EFS 集成功能不使用 IAM 角色：`USE_IAM_ROLE` 选项设置为 `FALSE`。要将 RDS for Oracle 与 Amazon EFS 和 IAM 角色集成，您的数据库实例必须具有可以访问 Amazon EFS 文件系统的 IAM 权限。

**Topics**
+ [步骤 1：为您的数据库实例创建 IAM 角色并附加策略](#oracle-efs-integration.iam.role)
+ [步骤 2：为您的 Amazon EFS 文件系统创建文件系统策略](#oracle-efs-integration.iam.policy)
+ [步骤 3：将您的 IAM 角色与 RDS for Oracle 数据库实例关联](#oracle-efs-integration.iam.instance)

## 步骤 1：为您的数据库实例创建 IAM 角色并附加策略
<a name="oracle-efs-integration.iam.role"></a>

在此步骤中，您将为 RDS for Oracle 数据库实例创建一个角色，以允许 Amazon RDS 访问您的 EFS 文件系统。

### 控制台
<a name="oracle-efs-integration.iam.role.console"></a>

**创建 IAM 角色以允许 Amazon RDS 访问 EFS 文件系统**

1. 打开 [IAM 管理控制台](https://console.aws.amazon.com/iam/home?#home)。

1. 在导航窗格中，选择**角色**。

1. 选择 **Create role (创建角色)**。

1. 对于 **AWS service (亚马逊云科技服务)**，选择 **RDS**。

1. 对于 **Select your use case (选择您的用例)**，选择 **RDS – Add Role to Database (RDS - 将角色添加到数据库)**。

1. 选择**下一步**。

1. 不要添加任何权限策略。选择**下一步**。

1. 将 **Role name (角色名称)** 设置为您的 IAM 角色的名称，例如，`rds-efs-integration-role`。您也可以添加可选的**描述**值。

1. 选择**创建角色**。

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

要限制服务对特定资源的权限，我们建议在基于资源的信任关系中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全局条件上下文键。这是防范[混淆代理问题](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)最有效的方法。

您可以使用这两个全局条件上下文键并让 `aws:SourceArn` 值包含账户 ID。在这种情况下，当 `aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户使用相同策略语句时，确保二者使用相同的账户 ID。
+ 如果您想对单个资源进行跨服务访问，请使用 `aws:SourceArn`。
+ 如果您想允许该账户中的任何资源与跨服务使用操作相关联，请使用 `aws:SourceAccount`。

在信任关系中，请务必使用 `aws:SourceArn` 全局条件上下文键和访问角色资源的完整 Amazon Resource Name (ARN)。

以下 AWS CLI 命令会创建名为 `{{rds-efs-integration-role}}` 的角色来实现此目的。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws iam create-role \
   --role-name {{rds-efs-integration-role}} \
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": {{my_account_ID}},
                 "aws:SourceArn": "arn:aws:rds:{{Region}}:{{my_account_ID}}:db:{{dbname}}"
             }
         }
       }
     ]
   }'
```
对于：Windows  

```
aws iam create-role ^
   --role-name {{rds-efs-integration-role}} ^
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": {{my_account_ID}},
                 "aws:SourceArn": "arn:aws:rds:{{Region}}:{{my_account_ID}}:db:{{dbname}}"
             }
         }
       }
     ]
   }'
```

有关更多信息，请参阅《IAM 用户指南》**中的[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

## 步骤 2：为您的 Amazon EFS 文件系统创建文件系统策略
<a name="oracle-efs-integration.iam.policy"></a>

在此步骤中，您将为 EFS 文件系统创建文件系统策略。

**创建或编辑 EFS 文件系统策略**

1. 打开 [EFS 管理控制台](https://console.aws.amazon.com/efs/home?#home)。

1. 选择 **File Systems (文件系统)**。

1. 在 **File systems**（文件系统）页面上，选择要为其编辑或创建文件系统策略的文件系统。将显示该文件系统的详细信息页面。

1. 选择 **File system policy**（文件系统策略）选项卡。

   如果策略为空，则使用默认 EFS 文件系统策略。有关更多信息，请参阅《Amazon Elastic File System 用户指南》**中的[默认 EFS 文件系统策略](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#default-filesystempolicy )。

1. 选择**编辑**。此时将显示 **File system policy (文件系统策略)** 页面。

1. 在 **Policy editor**（策略编辑器）中，输入如下所示的策略，然后选择 **Save**（保存）。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "ExamplePolicy01",
       "Statement": [
           {
               "Sid": "ExampleStatement01",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{123456789012}}:role/rds-efs-integration-role"
               },
               "Action": [
                   "elasticfilesystem:ClientMount",
                   "elasticfilesystem:ClientWrite",
                   "elasticfilesystem:ClientRootAccess"
               ],
               "Resource": "arn:aws:elasticfilesystem:{{us-east-1}}:{{123456789012}}:file-system/{{fs-1234567890abcdef0}}"
           }
       ]
   }
   ```

------

## 步骤 3：将您的 IAM 角色与 RDS for Oracle 数据库实例关联
<a name="oracle-efs-integration.iam.instance"></a>

在此步骤中，您将您的 IAM 角色与数据库实例关联。请注意以下要求：
+ 您必须具有访问 IAM 角色的权限，并向此角色附加所需的 Amazon EFS 权限策略。
+ 您一次只能将一个 IAM 角色与 RDS for Oracle 数据库实例关联。
+ 实例的状态必须为 **Available**（可用）。

有关更多信息，请参阅《Amazon Elastic File System 用户指南》**中的 [Amazon EFS 的身份和访问权限管理](https://docs.aws.amazon.com/efs/latest/ug/auth-and-access-control.html)。

### 控制台
<a name="oracle-efs-integration.iam.instance.console"></a>

**将您的 IAM 角色与 RDS for Oracle 数据库实例关联**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 选择**数据库**。

1. 如果数据库实例不可用，请选择 **Actions (操作)**，然后选择 **Start (启动)**。当实例状态显示 **Started (已启动)** 时，请转至下一步。

1. 选择 Oracle 数据库实例名称以显示其详细信息。

1. 在 **Connectivity & security**（连接性和安全性）选项卡上，向下滚动到页面底部的 **Manage IAM roles**（管理 IAM 角色）部分。

1. 选择要添加到 **Add IAM roles to this instance**（将 IAM 角色添加到此实例）部分的角色。

1. 对于 **Feature**（特征），选择 **EFS\_INTEGRATION**。

1. 选择**添加角色**。

### AWS CLI
<a name="oracle-efs-integration.iam.instance.CLI"></a>

以下 AWS CLI 命令将角色添加到名为 `{{mydbinstance}}` 的 Oracle 数据库实例。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier {{mydbinstance}} \
   --feature-name EFS_INTEGRATION \
   --role-arn {{your-role-arn}}
```
对于：Windows  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier {{mydbinstance}} ^
   --feature-name EFS_INTEGRATION ^
   --role-arn {{your-role-arn}}
```

将 `{{your-role-arn}}` 替换为您在上一步中记下的角色 ARN。必须为 `EFS_INTEGRATION` 选项指定 `--feature-name`。