在本地使用 IAM - AWS Snowball
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本指南适用于 Snowball Edge。如果您正在查找 Snowball 的相关文档,请参阅 AWS Snowball 用户指南

在本地使用 IAM

AWS Identity and Access Management (IAM) 可以帮助您安全地控制对在 AWS Snowball Edge 设备上运行的 AWS 资源的访问权限。您可以使用 IAM 控制对哪个用户进行身份验证 (登录) 和授权 (具有权限) 以使用资源。

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

此外,您可以在设备上使用 AWS Security Token Service (AWS STS) 创建基于会话的本地凭证。有关 IAM 服务的信息,请参阅 IAM 用户指南 中的入门

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

重要

本节中的文档适用于在 AWS Snowball Edge 设备上本地使用 IAM。有关在 AWS 云中使用 IAM 的信息,请参阅 Snowball 中的 Identity and Access Management

要使 AWS 服务在 Snowball Edge 上正常工作,您必须允许服务的端口。有关详细信息,请参阅 在 AWS Snowball Edge 设备上使用 AWS 服务所需的端口

在 Snowball Edge 上使用 AWS CLI 和 API 操作

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

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

Or

aws iam ls --profile snowballEdge --endpoint http://192.0.2.0:6078 --region snow
注意

在 AWS Snowball Edge 上本地使用的访问密钥 ID 和访问秘密密钥无法与 AWS 云中的密钥互换。

Snowball Edge 上支持的 IAM AWS CLI 命令的列表

下面是 Snowball Edge 设备上支持的一部分适用于 IAM 的 AWS CLI 命令和选项的描述。如果某个命令或选项未在下方列出,则表明它不受支持。描述中注明了不支持的命令参数。

  • attach-role-policy – 将指定的托管策略附加到指定的 IAM 角色。

  • attach-user-policy – 将指定的托管策略附加到指定的用户。

  • create-access-key – 为指定的用户创建新的本地 IAM 秘密访问密钥和对应的 AWS 访问密钥 ID。

  • create-policy – 为您的 设备 创建新的 IAM 托管策略。

  • create-role – 为您的 设备 创建新的本地 IAM 角色。 支持以下参数:

    • Tags

    • PermissionsBoundary

  • create-user – 为您的 设备 创建新的本地 IAM 用户。 支持以下参数:

    • Tags

    • PermissionsBoundary

  • delete-access-key – 为指定的用户创建新的本地 IAM 秘密访问密钥和对应的 AWS 访问密钥 ID。

  • delete-policy – 删除指定的托管策略。

  • delete-role – 删除指定的角色。

  • delete-user – 删除指定的用户。

  • detach-role-policy – 从指定的角色中删除指定的托管策略。

  • detach-user-policy – 从指定的用户删除指定的托管策略。

  • get-policy – 检索有关指定的托管策略的信息,包括策略的默认版本以及策略所附加到的本地 IAM 用户、组和角色的总数量。

  • get-policy-version – 检索有关指定的托管策略的指定版本的信息,包括策略文档。

  • get-role – 检索有关指定角色的信息,包括角色的路径、GUID、ARN 以及授权代入角色的角色信任策略。

  • get-user – 检索有关指定的 IAM 用户的信息,包括用户的创建日期、路径、唯一 ID 和 ARN。

  • list-access-keys – 返回有关与指定的 IAM 用户关联的访问密钥 ID 的信息。

  • list-attached-role-policies – 列出附加到指定 IAM 角色的所有托管策略。

  • list-attached-user-policies – 列出附加到指定 IAM 用户的所有托管策略。

  • list-entities-for-policy – 列出指定的托管策略所附加到的所有本地 IAM 用户、组和角色。

    • --EntityFilter:仅支持 userrole 值。

  • list-policies – 列出您的本地 AWS 账户中可用的所有托管策略。 支持以下参数:

    • --PolicyUsageFilter

  • list-roles – 列出具有指定路径前缀的本地 IAM 角色。

  • list-users – 列出具有指定路径前缀的 IAM 用户。

  • update-access-key – 将指定访问密钥的状态从活动改为非活动,或从非活动改为活动。

  • update-assume-role-policy – 更新授予 IAM 实体代入角色的权限的策略。

  • update-role – 更新角色的描述或最大会话持续时间设置。

  • update-user – 更新指定 IAM 用户的名称和/或路径。

支持的 IAM API 操作

下面是可以与 Snowball Edge 一起使用的 IAM API 操作,以及 IAM API 参考中指向这些操作的描述的链接。

  • AttachRolePolicy – 将指定的托管策略附加到指定的 IAM 角色。

  • AttachUserPolicy – 将指定的托管策略附加到指定的用户。

  • CreateAccessKey – 为指定的用户创建新的本地 IAM 秘密访问密钥和对应的 AWS 访问密钥 ID。

  • CreatePolicy – 为您的设备创建新的 IAM 托管策略。

  • CreateRole – 为您的设备创建新的本地 IAM 角色。

  • CreateUser – 为您的设备创建新的本地 IAM 用户。

    支持以下参数:

    • Tags

    • PermissionsBoundary

  • DeleteAccessKey– 删除指定的访问密钥。

  • DeletePolicy – 删除指定的托管策略。

  • DeleteRole – 删除指定的角色。

  • DeleteUser – 删除指定的用户。

  • DetachRolePolicy – 从指定的角色中删除指定的托管策略。

  • DetachUserPolicy – 从指定的用户删除指定的托管策略。

  • GetPolicy – 检索有关指定的托管策略的信息,包括策略的默认版本以及策略所附加到的本地 IAM 用户、组和角色的总数量。

  • GetPolicyVersion – 检索有关指定的托管策略的指定版本的信息,包括策略文档。

  • GetRole – 检索有关指定角色的信息,包括角色的路径、GUID、ARN 以及授权代入角色的角色信任策略。

  • GetUser – 检索有关指定的 IAM 用户的信息,包括用户的创建日期、路径、唯一 ID 和 ARN。

  • ListAccessKeys – 返回有关与指定的 IAM 用户关联的访问密钥 ID 的信息。

  • ListAttachedRolePolicies – 列出附加到指定 IAM 角色的所有托管策略。

  • ListAttachedUserPolicies – 列出附加到指定 IAM 用户的所有托管策略。

  • ListEntitiesForPolicy – 检索有关指定的 IAM 用户的信息,包括用户的创建日期、路径、唯一 ID 和 ARN。

    • --EntityFilter:仅支持 userrole 值。

  • ListPolicies – 列出您的本地 AWS 账户中可用的所有托管策略。 支持以下参数:

    • --PolicyUsageFilter

  • ListRoles – 列出具有指定路径前缀的本地 IAM 角色。

  • ListUsers – 列出具有指定路径前缀的 IAM 用户。

  • UpdateAccessKey – 将指定访问密钥的状态从活动改为非活动,或从非活动改为活动。

  • UpdateAssumeRolePolicy – 更新授予 IAM 实体代入角色的权限的策略。

  • UpdateRole – 更新角色的描述或最大会话持续时间设置。

  • UpdateUser – 更新指定 IAM 用户的名称和/或路径。

支持的 IAM 策略版本和语法

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

策略类型 支持的语法
基于身份的策略(用户/角色策略) Effect”、“Action”和“Resource
注意

本地 IAM 不支持“Condition”、“NotAction”、“NotResource”和“Principal”。

基于资源的策略(角色信任策略) Effect”、“Action”和“Principal
注意

对于委托人,仅允许 AWS 账户 ID 或委托人 ID。

IAM 策略示例

注意

AWS Identity and Access Management (IAM) 用户需要 "snowballdevice:*" 权限才能使用适用于 Snow 系列的 AWS OpsHub 应用程序来管理 Snow 系列设备。

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

示例 1:允许对 IAM API 进行完全访问

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

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

示例 2:允许对 Amazon S3 API 进行完全访问

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

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

示例 3:允许对特定的 Amazon S3 存储桶进行读写访问

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

{ "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/*" } ] }

示例 4:仅允许对特定 Amazon S3 存储桶进行列出访问

使用以下策略允许对特定存储桶进行列出访问,但拒绝其他所有操作。

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

示例 5:仅允许对特定 Amazon S3 存储桶进行列出、获取和放置访问

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

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

示例 6:允许对 Amazon EC2 API 进行完全访问

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

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

示例 7:允许启动和停止 Amazon EC2 实例的访问权限

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

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

示例 8:拒绝对 DescribeLaunchTemplates 的调用,但允许所有对 DescribeImages 的调用

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

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

示例 9:API 调用的策略

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

aws iam list-policies --endpoint http://ip-address:6078 --profile snowballEdge --region snow { "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 示例

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

以下是信任策略的示例。有关信任策略的更多信息,请参阅 AWS Security Token Service API Reference 中的 AssumeRole

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "AWS-account-ID" or "Principal ID" ] }, "Action": [ "sts:AssumeRole" ] } ] }