为 RDS for Oracle 与 Amazon EFS 集成配置 IAM 权限 - Amazon Relational Database Service

为 RDS for Oracle 与 Amazon EFS 集成配置 IAM 权限

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

步骤 1:为您的数据库实例创建 IAM 角色并附加策略

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

创建 IAM 角色以允许 Amazon RDS 访问 EFS 文件系统
  1. 打开 IAM 管理控制台

  2. 在导航窗格中,选择角色

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

  4. 对于 AWS service (亚马逊云科技服务),选择 RDS

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

  6. 选择下一步

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

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

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

要限制服务对特定资源的权限,我们建议在基于资源的信任关系中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键。这是防范混淆代理问题最有效的方法。

您可以使用这两个全局条件上下文键并让 aws:SourceArn 值包含账户 ID。在这种情况下,当 aws:SourceAccount 值和 aws:SourceArn 值中的账户使用相同策略语句时,确保二者使用相同的账户 ID。

  • 如果您想对单个资源进行跨服务访问,请使用 aws:SourceArn

  • 如果您想允许该账户中的任何资源与跨服务使用操作相关联,请使用 aws:SourceAccount

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

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

对于 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 用户委派权限的角色

步骤 2:为您的 Amazon EFS 文件系统创建文件系统策略

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

创建或编辑 EFS 文件系统策略
  1. 打开 EFS 管理控制台

  2. 选择 File Systems (文件系统)

  3. File systems(文件系统)页面上,选择要为其编辑或创建文件系统策略的文件系统。将显示该文件系统的详细信息页面。

  4. 选择 File system policy(文件系统策略)选项卡。

    如果策略为空,则使用默认 EFS 文件系统策略。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的默认 EFS 文件系统策略

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

  6. Policy editor(策略编辑器)中,输入如下所示的策略,然后选择 Save(保存)。

    { "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 数据库实例关联

在此步骤中,您将您的 IAM 角色与数据库实例关联。请注意以下要求:

  • 您必须具有访问 IAM 角色的权限,并向此角色附加所需的 Amazon EFS 权限策略。

  • 您一次只能将一个 IAM 角色与 RDS for Oracle 数据库实例关联。

  • 实例的状态必须为 Available(可用)。

有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 Amazon EFS 的身份和访问权限管理

将您的 IAM 角色与 RDS for Oracle 数据库实例关联
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择数据库

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

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

  5. Connectivity & security(连接性和安全性)选项卡上,向下滚动到页面底部的 Manage IAM roles(管理 IAM 角色)部分。

  6. 选择要添加到 Add IAM roles to this instance(将 IAM 角色添加到此实例)部分的角色。

  7. 对于 Feature(特征),选择 EFS_INTEGRATION

  8. 选择 Add role (添加角色)

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

对于 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