

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

# 在 Snowball Edge 上本地使用 IAM
<a name="using-local-iam"></a>

AWS Identity and Access Management (IAM) 可帮助您安全地控制对 AWS Snowball Edge 设备上运行的 AWS 资源的访问权限。可以使用 IAM 来控制谁通过了身份验证（准许登录）并获得授权（具有相应权限）来使用资源。

您的设备本地支持 IAM。您可以使用本地 IAM 服务创建新用户并将 IAM policy 附加于这些用户。您可以使用这些策略以允许执行分配的任务所需的访问权限。例如，您可以允许用户传输数据，但限制他们创建与 Amazon EC2 兼容的新实例的能力。

此外，您还可以在设备上使用 AWS Security Token Service (AWS STS) 创建基于会话的本地凭证。有关 IAM 服务的更多信息，请参阅《IAM 用户指南》**中的[开始使用](https://docs.aws.amazon.com/IAM/latest/GettingStartedGuide/)。

您设备的根凭证无法禁用，也不能使用账户中的策略来明确拒绝 AWS 账户 根用户的访问权限。我们建议您保护您的根用户访问密钥，并创建 IAM 用户凭证，以便与设备进行日常交互。

**重要**  
本节中的文档适用于在 AWS Snowball Edge 设备上本地使用 IAM。有关在中使用 IAM 的信息 AWS Cloud，请参阅[Identity and Access Management AWS Snowball Edge](snowball-edge-iam.md)。  
要使 AWS 服务在 Snowball Edge 上正常运行，必须允许服务使用端口。有关更多信息，请参阅 [Snowball Edge 上 AWS 服务的端口要求](port-requirements.md)。

**Topics**
+ [在 Snowball Edge 上使用 AWS CLI 和 API 操作](#local-iam-specify-region)
+ [Snowball E AWS CLI dge 上支持的 IAM 命令列表](#local-iam-cli-commands)
+ [Snowball Edge 上的 IAM 策略示例](#policy-examples)
+ [TrustPolicy Snowball Edge 上的示例](#role-policy-example-trust)

## 在 Snowball Edge 上使用 AWS CLI 和 API 操作
<a name="local-iam-specify-region"></a>

使用 AWS CLI 或 API 操作在 Snowball Edge 上发出 IAM AWS STS、、Amazon S3 和 Amazon EC2 命令时，必须将指定`region`为 “。” `snow` 您可以使用命令本身`aws configure`或在命令本身内执行此操作，如以下示例所示。

```
aws configure --profile abc
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: 1234567
Default region name [None]: snow
Default output format [None]: json
```

或

```
aws iam list-users --endpoint http://192.0.2.0:6078 --region snow --profile snowballEdge 
```

**注意**  
本地使用的访问密钥 ID 和访问机密密钥 AWS Snowball Edge 不能与中的密钥互换。 AWS Cloud

## Snowball E AWS CLI dge 上支持的 IAM 命令列表
<a name="local-iam-cli-commands"></a>

以下是 Snowball Edge 设备上支持的 IAM AWS CLI 命令和选项子集的描述。如果某个命令或选项未在下方列出，则表明它不受支持。描述中注明了不支持的命令参数。
+ [attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)— 将指定的托管策略附加到指定的 IAM 角色。
+ [attach-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)— 将指定的托管策略附加到指定用户。
+ [create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)— 为指定用户创建新的本地 IAM 私有 AWS 访问密钥和相应的访问密钥 ID。
+ [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html)：为您的设备创建新的 IAM 托管策略。
+ [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)：为您的设备创建新的本地 IAM 角色。**不** 支持以下参数：
  + `Tags`
  + `PermissionsBoundary`
+ [create-user](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html)：为您的设备创建新的本地 IAM 用户。**不** 支持以下参数：
  + `Tags`
  + `PermissionsBoundary`
+ [delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)— 删除指定用户的新本地 IAM 私有 AWS 访问密钥和相应的访问密钥 ID。
+ [delete-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-policy.html)：删除指定的托管策略。
+ [delete-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html)：删除指定的角色。
+ [delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)：删除指定的用户。
+ [detach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-role-policy.html)— 从指定角色中删除指定的托管策略。
+ [detach-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html)— 从指定用户中移除指定的托管策略。
+ [get-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy.html)：检索有关指定的托管策略的信息，包括策略的默认版本以及策略所附加到的本地 IAM 用户、组和角色的总数量。
+ [get-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy-version.html)— 检索有关指定托管策略的指定版本的信息，包括策略文档。
+ [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)：检索有关指定角色的信息，包括角色的路径、GUID、ARN 以及授权代入角色的角色信任策略。
+ [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)：检索有关指定的 IAM 用户的信息，包括用户的创建日期、路径、唯一 ID 和 ARN。
+ [list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)— 返回与指定 IAM 用户 IDs 关联的访问密钥的相关信息。
+ [list-attached-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-role-policies.html)— 列出附加到指定 IAM 角色的所有托管策略。
+ [list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)— 列出附加到指定 IAM 用户的所有托管策略。
+ [list-entities-for-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/list-entities-for-policy.html)— 列出指定托管策略所关联的所有本地 IAM 用户、群组和角色。
  + `--EntityFilter`：仅支持 `user` 和 `role` 值。
+ [list-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html)：列出您的本地 AWS 账户中可用的所有托管策略。**不** 支持以下参数：
  + `--PolicyUsageFilter`
+ [list-roles](https://docs.aws.amazon.com/cli/latest/reference/iam/list-roles.html)：列出具有指定路径前缀的本地 IAM 角色。
+ [list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)：列出具有指定路径前缀的 IAM 用户。
+ [update-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)— 将指定访问密钥的状态从 “活动” 更改为 “非活动”，反之亦然。
+ [update-assume-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-assume-role-policy.html)— 更新授予 IAM 实体担任角色的权限的策略。
+ [update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)：更新角色的描述或最大会话持续时间设置。
+ [update-user — 更新指定 IAM 用户的](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)名称 and/or 路径。

### Snowball Edge 上支持的 IAM API 操作
<a name="iam-local-supported-apis"></a>

下面是可以与 Snowball Edge 一起使用的 IAM API 操作，以及 IAM API 参考中指向这些操作的描述的链接。
+ [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)— 将指定的托管策略附加到指定的 IAM 角色。
+ [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html)— 将指定的托管策略附加到指定用户。
+ [CreateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)— 为指定用户创建新的本地 IAM 私有 AWS 访问密钥和相应的访问密钥 ID。
+ [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)— 为您的设备创建新的 IAM 托管策略。
+ [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)— 为您的设备创建新的本地 IAM 角色。
+ [CreateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html)— 为您的设备创建新的本地 IAM 用户。

  **不** 支持以下参数：
  + `Tags`
  + `PermissionsBoundary`
+ [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)— 删除指定的访问密钥。
+ [DeletePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeletePolicy.html)— 删除指定的托管策略。
+ [DeleteRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRole.html)— 删除指定的角色。
+ [DeleteUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html)— 删除指定的用户。
+ [DetachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachRolePolicy.html)— 从指定角色中删除指定的托管策略。
+ [DetachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachUserPolicy.html)— 从指定用户中移除指定的托管策略。
+ [GetPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html)— 检索有关指定托管策略的信息，包括策略的默认版本以及该策略所关联的本地 IAM 用户、群组和角色的总数。
+ [GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html)— 检索有关指定托管策略的指定版本的信息，包括策略文档。
+ [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)— 检索有关指定角色的信息，包括角色的路径、GUID、ARN 以及该角色授予代入该角色权限的信任策略。
+ [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)— 检索有关指定 IAM 用户的信息，包括用户的创建日期、路径、唯一 ID 和 ARN。
+ [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)— 返回与指定 IAM 用户 IDs 关联的访问密钥的相关信息。
+ [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)— 列出附加到指定 IAM 角色的所有托管策略。
+ [ListAttachedUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedUserPolicies.html)— 列出附加到指定 IAM 用户的所有托管策略。
+ [ListEntitiesForPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListEntitiesForPolicy.html)— 检索有关指定 IAM 用户的信息，包括用户的创建日期、路径、唯一 ID 和 ARN。
  + `--EntityFilter`：仅支持 `user` 和 `role` 值。
+ [ListPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html)— 列出本地可用的所有托管策略 AWS 账户。**不** 支持以下参数：
  + `--PolicyUsageFilter`
+ [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)— 列出具有指定路径前缀的本地 IAM 角色。
+ [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)— 列出具有指定路径前缀的 IAM 用户。
+ [UpdateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)— 将指定访问密钥的状态从 “活动” 更改为 “非活动”，反之亦然。
+ [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)— 更新授予 IAM 实体担任角色的权限的策略。
+ [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)— 更新角色的描述或最长会话持续时间设置。
+ [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html)— 更新指定 IAM 用户的名称 and/or 和路径。

### Snowball Edge 上支持 IAM 策略版本和语法
<a name="iam-policy"></a>

以下是 IAM 策略的本地 IAM 支持版本 2012-10-17 和策略语法的子集。


| 策略类型 | 支持的语法 | 
| --- | --- | 
| 基于身份的策略（用户/角色策略） | “Effect”、“Action”和“Resource”  本地 IAM 不支持“`Condition`”、“`NotAction`”、“`NotResource`”和“`Principal`”。   | 
| 基于资源的策略（角色信任策略） | “Effect”、“Action”和“Principal”  对于委托人，只允许使用 AWS 账户 身份证或委托人ID。   | 

## Snowball Edge 上的 IAM 策略示例
<a name="policy-examples"></a>

**注意**  
AWS Identity and Access Management (IAM) 用户需要`"snowballdevice:*"`权限才能使用该[AWS OpsHub for Snow Family 应用程序](aws-opshub.md)来管理 Snowball Edge。

以下是授予对 Snowball Edge 设备的权限的策略示例。

### 允许通过 IAM API 在 Snowball Edge 上 GetUser 调用示例用户
<a name="role-policy-example-iam"></a>

使用以下策略允许通过 IAM API GetUser 调用示例用户。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:GetUser",
            "Resource": "arn:aws:iam:::user/example-user"
        }
    ]
}
```

------

### 允许在 Snowball Edge 上完全访问亚马逊 S3 API
<a name="role-policy-example-s3-full"></a>

使用以下策略允许对 Amazon S3 API 进行完全访问。

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

****  

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

------

### 允许对 Snowball Edge 上的 Amazon S3 存储桶进行读写权限
<a name="role-policy-example-s3-bucket"></a>

 使用以下策略允许对特定存储桶进行读取和写入访问。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::bucket-name"
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": "arn:aws:s3:::bucket-name/*"
        }
    ]
}
```

------<a name="role-policy-example-s3-list"></a>

### 允许在 Snowball Edge 上列出、获取和放置对亚马逊 S3 存储桶的访问权限
<a name="role-policy-example-s3-lgp"></a>

使用以下策略允许对特定的 S3 存储桶进行列出、获取和放置访问。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:List*"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

### 允许在 Snowball Edge 上完全访问亚马逊 EC2 API
<a name="role-policy-example-ec2"></a>

 使用以下策略允许对 Amazon 的完全访问权限 EC2。

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

****  

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

------

### 允许在 Snowball EC2 Edge 上启动和停止与亚马逊兼容的实例
<a name="role-policy-example-ec2-stop-start"></a>

 使用以下策略允许访问启动和停止 Amazon EC2 实例。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### 在 Snowball Edge DescribeImages 上拒绝所有来电 DescribeLaunchTemplates 但允许所有来电
<a name="role-policy-example-ec2-desc-image"></a>

 使用以下策略拒绝调用 `DescribeLaunchTemplates`，但允许所有对 `DescribeImages` 的调用。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:DescribeLaunchTemplates"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeImages"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### Snowball Edge 上的 API 调用政策
<a name="local-sts-cli-example-policy"></a>

列出您的 Snow 设备上可用的所有托管策略，包括您自己的客户定义的托管策略。更多详细信息，请参见 [list-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html)。

```
aws iam list-policies --endpoint http://ip-address:6078 --region snow --profile snowballEdge
{
    "Policies": [
        {
            "PolicyName": "Administrator",
            "Description": "Root user admin policy for Account 123456789012",
            "CreateDate": "2020-03-04T17:44:59.412Z",
            "AttachmentCount": 1,
            "IsAttachable": true,
            "PolicyId": "policy-id",
            "DefaultVersionId": "v1",
            "Path": "/",
            "Arn": "arn:aws:iam::123456789012:policy/Administrator",
            "UpdateDate": "2020-03-04T19:10:45.620Z"
        }
    ]
}
```

## TrustPolicy Snowball Edge 上的示例
<a name="role-policy-example-trust"></a>

信任策略会返回一组临时安全证书，您可以使用这些证书来访问通常可能无法访问的 AWS 资源。这些临时凭证由访问密钥 ID、秘密访问密钥和安全令牌组成。通常，您在账户中使用 `AssumeRole` 进行跨账户访问。

以下是信任策略的示例。有关信任策略的更多信息，请参阅 *AWS Security Token Service API 参考[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)*中的。

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

****  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::AccountId:root" //You can use the Principal ID instead of the account ID. 
                ]
            },
            "Action": [
                "sts:AssumeRole"
            ]
        }
    ]
}
```

------