

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

# 使用适用于亚马逊的基于身份的政策（IAM 策略） ElastiCache
<a name="IAM.IdentityBasedPolicies"></a>

本主题提供了基于身份的策略的示例，在这些策略中，账户管理员可以向 IAM 身份（即：用户、组和角色）附加权限策略。

**重要**  
我们建议您先阅读解释基本概念和管理 Amazon ElastiCache 资源访问权限的选项的主题。有关更多信息，请参阅 [管理 ElastiCache 资源访问权限概述](IAM.Overview.md)。

本主题的各个部分涵盖以下内容：
+ [AWS Amazon 的托管政策 ElastiCache](IAM.IdentityBasedPolicies.PredefinedPolicies.md)
+ [客户管理型策略示例](#IAM.IdentityBasedPolicies.CustomerManagedPolicies)

下面展示了使用 Redis OSS 时的权限策略示例。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowClusterPermissions",
            "Effect": "Allow",
            "Action": [
                "elasticache:CreateServerlessCache",
                "elasticache:CreateCacheCluster",
                "elasticache:DescribeServerlessCaches",
                "elasticache:DescribeReplicationGroups",
                "elasticache:DescribeCacheClusters",
                "elasticache:ModifyServerlessCache",
                "elasticache:ModifyReplicationGroup",
                "elasticache:ModifyCacheCluster"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToPassRole",
            "Effect": "Allow",
            "Action": [ "iam:PassRole" ],
            "Resource": "arn:aws:iam::123456789012:role/EC2-roles-for-cluster"
        }
    ]
}
```

------

下面展示了使用 Memcached 时的权限策略示例。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowClusterPermissions",
        "Effect": "Allow",
        "Action": [
            "elasticache:CreateServerlessCache",
            "elasticache:CreateCacheCluster",
            "elasticache:DescribeServerlessCaches",
            "elasticache:DescribeCacheClusters",
            "elasticache:ModifyServerlessCache",
            "elasticache:ModifyCacheCluster"
        ],
        "Resource": "*"
    },
    {
        "Sid": "AllowUserToPassRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::123456789012:role/EC2-roles-for-cluster"
    }
    ]
}
```

------

该策略包含两条语句：
+ 第一条语句授予对 Amazon ElastiCache 操作的权限（`elasticache:Create*`、`elasticache:Describe*`、`elasticache:Modify*`） 
+ 第二条语句授予对 `Resource` 值末尾指定的 IAM 角色名称的 IAM 操作（`iam:PassRole`）的权限。

该策略不指定 `Principal` 元素，因为在基于身份的策略中，您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后，该角色的信任策略中标识的主体将获取权限。

有关显示所有 Amazon ElastiCache API 操作及其适用的资源的表格，请参阅[ElastiCache API 权限：操作、资源和条件参考](IAM.APIReference.md)。

## 客户管理型策略示例
<a name="IAM.IdentityBasedPolicies.CustomerManagedPolicies"></a>

如果您未使用默认策略并选择使用自定义托管策略，请确保以下两项之一。您应该有权调用 `iam:createServiceLinkedRole`（有关更多信息，请参阅[示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)）。或者你应该已经创建了一个 ElastiCache 与服务相关的角色。

与使用 Amazon ElastiCache 控制台所需的最低权限相结合，本节中的示例策略将授予额外权限。这些示例也与AWS SDKs 和有关AWS CLI。

有关设置 IAM 用户和组的说明，请参阅 *IAM 用户指南*中的[创建您的第一个 IAM 用户和管理员组](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。

**重要**  
在生产中使用 IAM 策略之前，请始终全面测试这些策略。在您使用 ElastiCache 控制台时，某些 ElastiCache 看似简单的操作可能需要其他操作来支持它们。例如，`elasticache:CreateCacheCluster`授予创建 ElastiCache 集群的权限。但是，为了执行此操作， ElastiCache 控制台使用许多`Describe`和`List`操作来填充控制台列表。

**Topics**
+ [示例 1：允许用户对 ElastiCache 资源进行只读访问](#example-allow-list-current-elasticache-resources)
+ [示例 2：允许用户执行常见的 ElastiCache 系统管理员任务](#example-allow-specific-elasticache-actions)
+ [示例 3：允许用户访问所有 ElastiCache API 操作](#allow-unrestricted-access)
+ [示例 4：允许用户调用 IAM CreateServiceLinkedRole API](#create-service-linked-role-policy)
+ [示例 5：允许用户使用 IAM 身份验证连接到无服务器缓存](#iam-connect-policy)

### 示例 1：允许用户对 ElastiCache 资源进行只读访问
<a name="example-allow-list-current-elasticache-resources"></a>

以下策略授予允许用户列出资源的权限 ElastiCache 操作。通常，您将此类型的权限策略挂载到管理人员组。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECReadOnly",
      "Effect":"Allow",
      "Action": [
          "elasticache:Describe*",
          "elasticache:List*"],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 2：允许用户执行常见的 ElastiCache 系统管理员任务
<a name="example-allow-specific-elasticache-actions"></a>

常见的系统管理员任务包括修改资源。系统管理员还可能需要获得有关 ElastiCache 事件的信息。以下策略向用户授予执行这些常见系统管理员任务的 ElastiCache 操作的权限。通常，您将此类型的权限策略挂载到系统管理员组。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECAllowMutations",
      "Effect":"Allow",
      "Action":[
          "elasticache:Modify*",
          "elasticache:Describe*",
          "elasticache:ResetCacheParameterGroup"
      ],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 3：允许用户访问所有 ElastiCache API 操作
<a name="allow-unrestricted-access"></a>

以下策略允许用户访问所有 ElastiCache 操作。建议您仅向管理员用户授予此类型的权限策略。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[{
      "Sid": "ECAllowAll",
      "Effect":"Allow",
      "Action":[
          "elasticache:*" 
      ],
      "Resource":"*"
      }
   ]
}
```

------

### 示例 4：允许用户调用 IAM CreateServiceLinkedRole API
<a name="create-service-linked-role-policy"></a>

以下策略允许用户调用 IAM `CreateServiceLinkedRole` API。我们建议您向调用变异 ElastiCache 操作的用户授予此类权限策略。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"CreateSLRAllows",
      "Effect":"Allow",
      "Action":[
        "iam:CreateServiceLinkedRole"
      ],
      "Resource":"*",
      "Condition":{
        "StringLike":{
        "iam:AWSServiceName":"elasticache.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### 示例 5：允许用户使用 IAM 身份验证连接到无服务器缓存
<a name="iam-connect-policy"></a>

以下策略允许任何用户在 2023 年 4 月 1 日到 2023 年 6 月 30 日之间，使用 IAM 身份验证连接到任何无服务器缓存。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" :
  [
    {
      "Effect" : "Allow",
      "Action" : ["elasticache:Connect"],
      "Resource" : [
        "arn:aws:elasticache:us-east-1:123456789012:serverlesscache:*"
      ],
      "Condition": {
        "DateGreaterThan": {"aws:CurrentTime": "2023-04-01T00:00:00Z"},
        "DateLessThan": {"aws:CurrentTime": "2023-06-30T23:59:59Z"}
      }
    },
    {
      "Effect" : "Allow",
      "Action" : ["elasticache:Connect"],
      "Resource" : [
        "arn:aws:elasticache:us-east-1:123456789012:user:*"
      ]
    }
  ]
}
```

------