

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

# IAM 安全最佳实践
<a name="best-practices"></a>

IAM 管理员将负责以下三个关键领域的安全。
+ 确保 SAP 系统可使用 Amazon EC2 元数据或密钥凭证自行验证身份。
+ 确保 SAP 系统具有提升 `sts:assumeRole` 所需的权限。
+ 为 SAP 用户创建 IAM 逻辑角色，其具有执行业务职能所需的权限（如执行 Amazon S3、DynamoDB 或其他服务所需的权限）。这些都是 SAP 用户将会代入的角色。

有关更多信息，请参阅 SAP Lens： AWS Well-Architected Framework 中的[安全](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/security.html)一章。

**Topics**
+ [适用于 Amazon EC2 实例配置文件的最佳实践](#best-practice-instance-profile)
+ [适用于 SAP 用户的 IAM 角色](#iam-roles-sap-users)
+ [来源配置文件安全注意事项](#source-profile-security)

## 适用于 Amazon EC2 实例配置文件的最佳实践
<a name="best-practice-instance-profile"></a>

为您运行 SAP 系统的 Amazon EC2 实例具有一组基于其实例配置文件的权限。这类实例配置文件通常只需要具有调用 `sts:assumeRole` 的权限，即可允许 SAP 系统按需代入业务特定的 IAM 角色。提升其他角色可确保 ABAP 程序代入角色，向用户授予履职所需的最低权限。例如，实例配置文件可能包含以下声明。

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

****  

```
{
 "Version":"2012-10-17",		 	 	 
 "Statement": [
   {
     "Sid": "VisualEditor0",
     "Effect": "Allow",
     "Action": "sts:AssumeRole",
     "Resource":[
        "arn:aws:iam::012345678912:role/finance-cfo",
        "arn:aws:iam::012345678912:role/finance-auditor",
        "arn:aws:iam::012345678912:role/finance-reporting"
      ]
   }
 ]
}
```

------

前面的示例允许 SAP 系统担任 CFO、审计员或报告用户的 IAM 角色。 AWS SDK 将根据用户在 SAP 中的 PFCG 角色为用户选择正确的 IAM 角色。

Amazon EC2 实例配置文件也适用于其他功能。
+ [AWS 适用于 SAP HANA 的 Backint Agent](https://docs.aws.amazon.com/sap/latest/sap-hana/aws-backint-agent-sap-hana.html)
+ [具有覆盖 IP 地址路由的 AWS 高可用性配置上的 SAP](https://docs.aws.amazon.com/sap/latest/sap-hana/sap-ha-overlay-ip.html)

这些解决方案可能还需要特定于备份或失效转移的 `sts:assumeRole` 角色的权限，或者需要直接分配给实例配置文件的权限。

## 适用于 SAP 用户的 IAM 角色
<a name="iam-roles-sap-users"></a>

ABAP 程序需要权限才能执行用户的工作：读取 DynamoDB 表、在 Amazon S3 中的 PDF 对象上调用 Amazon Textract、运行函数。 AWS Lambda 所有产品都使用相同的安全模型 AWS SDKs。您可以使用另一个 AWS SDK 所用的现有 IAM 角色。

SAP 业务分析师将针对每个所需的逻辑角色，向 IAM 管理员要求 IAM 角色的 arn:aws:。例如，业务分析师会在财务场景中定义以下 IAM 逻辑角色。
+  `CFO` 
+  `AUDITOR` 
+  `REPORTING` 

IAM 管理员将为每个 IAM 逻辑角色定义 IAM 角色。

 `CFO` 
+  `arn:aws:iam::0123456789:role/finance-cfo` 
+ Amazon S3 存储桶的读写权限
+ DynamoDB 数据库的读写权限

 `AUDITOR` 
+  `arn:aws:iam::0123456789:role/finance-auditor` 
+ Amazon S3 存储桶的读取权限
+  DynamoDB 数据库的读取权限

 `REPORTING` 
+  `arn:aws:iam::0123456789:role/finance-reporting` 
+ DynamoDB 数据库的读取权限
+ 取消 Amazon S3 存储桶的权限

业务分析师将 IAM 角色输入映射表，实现 IAM 逻辑角色与 IAM 物理角色的映射。

SAP 用户的 IAM 角色需允许可信主体执行 `sts:assumeRole` 操作。根据 SAP 系统在 AWS上的身份验证方式，可信主体有所不同。有关更多信息，请参阅[指定主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)。

以下列举了部分最常见的 SAP 场景示例：
+ **运行在 Amazon EC2 上且具有实例配置文件的 SAP 系统**：此系统会为 IAM 角色附加 Amazon EC2 实例配置文件。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sts:AssumeRole"
              ],
              "Principal": { 
                  "AWS": "arn:aws:iam::123456789012:role/SapInstanceProfile" 
              }
          }
      ]
  }
  ```

------
+ **运行在 Amazon EC2 上但没有实例配置文件的 SAP 系统**：Amazon EC2 会代入适用于 SAP 用户的角色。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sts:AssumeRole"
              ],
              "Principal": { 
                  "Service": [ "ec2.amazonaws.com" ] 
              }
          }
      ]
  }
  ```

------
+ **本地运行的 SAP 系统**：本地运行的 SAP 系统只能使用秘密访问密钥验证身份。有关更多信息，请参阅[在 AWS上验证 SAP 系统](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/system-authentication.html)。

  SAP 用户必须与其代入的所有 IAM 角色建立信任关系。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sts:AssumeRole"
              ],
              "Principal": { 
                  "AWS": "arn:aws:iam::123456789012:user/SAP_SYSTEM_S4H" 
              }
          }
      ]
  }
  ```

------

## 来源配置文件安全注意事项
<a name="source-profile-security"></a>

使用来源配置文件时：

### IAM 角色管理
<a name="iam-role-management"></a>

**关键**：必须严格管理来源配置文件链中的 IAM 角色，以防止未经授权的访问和权限升级：
+ **应用最低权限原则**-仅授予每个角色特定目的所需的最低权限
+ **定期审核角色权限**-每季度或在需求发生变化时审查和更新角色策略
+ **监控角色使用情况**-用于跟踪 AssumeRole API 调用并识别异常模式
+ **限制信任关系**-将每个角色的委托人限制为只有那些绝对需要访问权限的委托人
+ **在信任策略中使用条件**-根据需要添加源 IP、MFA 要求或基于时间的限制等条件
+ **记录角色用途**-清晰记录每个角色的预期用例和所需权限

### 授权和访问控制
<a name="authorization-access-control"></a>
+ 确保链中的所有中间配置文件都配置了适当的信任策略
+ 用户必须`/AWS1/SESS`获得链中所有配置文件的授权，包括中间配置文件
+ 每个 IAM 角色都必须明确信任链中的前一个角色

### 技术保障
<a name="technical-safeguards"></a>
+ SDK 强制执行的最大链深度为 5 个配置文件，以防止过多的 STS API 调用
+ 自动检测和防止循环引用
+ 基本配置文件身份验证方法经过验证，以确保其使用标准方法（INST、SSF 或 RLA）

有关配置来源配置文件的更多信息，请参阅[使用来源配置文件进行跨账户访问](https://docs.aws.amazon.com/sdk-for-sapabap/latest/developer-guide/source-profile.html)。