AWS RoboMaker的身份验证和访问控制 - AWS RoboMaker

终止支持通知:2025 年 9 月 10 日, AWS 将停止对的支持。 AWS RoboMaker2025 年 9 月 10 日之后,您将无法再访问 AWS RoboMaker 控制台或 AWS RoboMaker 资源。有关过渡 AWS Batch 到以帮助运行容器化仿真的更多信息,请访问此博客文章。

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

AWS RoboMaker的身份验证和访问控制

AWS Identity and Access Management (IAM) 是一项 AWS 服务,可帮助管理员安全地控制对 AWS RoboMaker 资源的访问。管理员使用 IAM 来控制谁经过身份验证(登录)和授权(拥有权限)使用 AWS RoboMaker 资源。IAM 是您 AWS 账户的一项功能,不收取额外费用。

重要

要快速地开始使用,请查看此页面上的介绍性信息,然后参阅IAM 入门什么是策略?

主题

授权和访问控制简介

AWS RoboMaker 与 AWS Identity and Access Management (IAM) 集成,后者提供多种功能:

  • 在中创建用户和群组 AWS 账户。

  • 在您的用户之间轻松共享您的 AWS 资源 AWS 账户。

  • 为每个用户分配具有唯一性的安全凭证

  • 控制每个用户对服务和资源的访问

  • 为您 AWS 账户的所有用户获取一张账单。

有关 IAM 的更多信息,请参阅以下文档:

所需权限

要使用 AWS RoboMaker 或管理自己或他人的授权和访问控制,您必须拥有正确的权限。

使用 AWS RoboMaker 控制台所需要的权限

要访问 AWS RoboMaker 控制台,您必须拥有一组允许您列出和查看 AWS 账户中 AWS RoboMaker 资源的详细信息的最低权限。如果创建比必需的最低权限更为严格的基于身份的权限策略,对于附加了该策略的实体,控制台将无法按预期正常运行。

要获得对 AWS RoboMaker 控制台的只读访问权限,请使用AWSRoboMakerReadOnlyAccess策略。

如果 IAM 用户想要创建模拟作业,您需要向该用户授予iam:PassRole权限。有关传递角色的更多信息,请参阅授予向 AWS 服务传递角色的用户权限

例如,您可以将以下策略附加到一个用户。它提供创建模拟作业的权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/S3AndCloudWatchAccess" } ] }

对于仅调用 AWS CLI 或 AWS API 的用户,您无需为其设置最低控制台权限。相反,您只需要与您尝试执行的 API 操作相匹配的权限。

在控制台中查看世界所需的权限 AWS RoboMaker

您可以通过向用户附加以下策略来授予在 AWS RoboMaker 控制台中查看 AWS RoboMaker 世界所需的权限:

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

使用 AWS RoboMaker 模拟工具所需的权限

用于创建模拟的 IAM 用户或角色将自动拥有访问模拟工具的权限。如果使用不同的用户或角色,则该用户或角色应具有 robomaker:CreateSimulationJob 权限。

身份验证管理所需的权限

要管理自己的凭证(例如密码、访问密钥和多重验证 (MFA) 设备),管理员必须授予您所需的权限。要查看包含这些权限的策略,请参阅允许用户自行管理他们的凭证

作为 AWS 管理员,您需要完全访问 IAM,以便您可以在 IAM 中创建和管理用户、群组、角色和策略。您应该使用包含对所有内容的完全访问权限的AdministratorAccess AWS 托管策略 AWS。此策略不提供对 AWS Billing and Cost Management 控制台的访问权限,也不允许需要根用户凭据的任务。有关更多信息,请参阅 AWS 一般参考 需要 AWS 账户 根用户凭证的AWS 任务。

警告

只有管理员用户才应具有完全访问权限 AWS。除了修改 AWS中的每个资源之外,拥有此策略的任何人都有权完全管理身份验证和访问控制。要了解如何创建此用户,请参阅创建 IAM 管理员用户

访问控制所需的权限

如果管理员为您提供了 IAM 用户凭证,则它们会将策略附加到您的 IAM 用户,以控制您可以访问的资源。要在中查看附加到您的用户的策略 AWS Management Console,您必须具有以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ] }, { "Sid": "ListUsersViewGroupsAndPolicies", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

如果您需要其他权限,请要求管理员更新策略以允许您访问所需的操作。

对模拟作业所需的权限

创建模拟作业时,必须具有包含以下权限的 IAM 角色。

  • amzn-s3-demo-source-bucket 替换为包含机器人和模拟应用程序捆绑的存储桶的名称。

  • 替换amzn-s3-demo-destination-bucket为指向 AWS RoboMaker 将写入输出文件的存储桶。

  • account# 替换为您的账号。

公共 ECR 任务需要单独的权限(例如ecr-public:GetAuthorizationTokensts:GetServiceBearerToken)以及最终执行所需的任何其他权限。有关更多信息,请参阅 Amazon ECR 用户指南中的 Public 存储库策略

Jobs with Private ECR images
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket" ], "Effect": "Allow" }, { "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ], "Effect": "Allow" }, { "Action": "s3:Put*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ], "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:account#:log-group:/aws/robomaker/SimulationJobs*" ], "Effect": "Allow" }, { "Action": [ "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer" ], "Resource": "arn:partition:ecr:region:account#:repository/repository_name", "Effect": "Allow" } ] }
Jobs with Public ECR images
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket" ], "Effect": "Allow" }, { "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ], "Effect": "Allow" }, { "Action": "s3:Put*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ], "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:account#:log-group:/aws/robomaker/SimulationJobs*" ], "Effect": "Allow" }, { "Action": [ "ecr-public:GetAuthorizationToken", "sts:GetServiceBearerToken" ], "Resource": "*", "Effect": "Allow" } ] }

该策略必须附加到具有以下信任策略的角色。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": { "aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件键可以防止 AWS 服务在服务之间执行事务时被用作混淆代理人。有关条件键SourceArn的更多信息,请参阅SourceAccount和。

从 ROS 应用程序或 ROS 命令行使用标记所需的权限

当模拟作业正在运行时,您可以从 ROS 命令行或 ROS 应用程序中标记、取消标记和列出此作业中的标记。您必须具有拥有以下权限的 IAM 角色。将 account# 替换为您的账号。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "robomaker:TagResource", "robomaker:UntagResource", "robomaker:ListTagsForResource", ], "Resource": [ "arn:aws:robomaker:*:account#:simulation-job*" ], "Effect": "Allow" } ] }

该策略必须附加到具有以下信任策略的角色:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": { "aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件键可以防止 AWS 服务在服务之间执行事务时被用作混淆代理人。有关条件键SourceArn的更多信息,请参阅SourceAccount和。

了解 IAM AWS RoboMaker 的工作原理

服务可以几种方式与 IAM 协同工作:

  • 操作- AWS RoboMaker 支持在策略中使用操作。这允许管理员控制实体是否可以在 AWS RoboMaker中完成操作。例如,要允许实体通过执行 GetPolicy AWS API 操作来查看策略,管理员必须附加允许该iam:GetPolicy操作的策略。

  • 资源级权限 – AWS RoboMaker 不支持资源级权限。资源级权限允许您使用ARNs在策略中指定单个资源。由于 AWS RoboMaker 不支持此功能,因此您必须在策略可视化编辑器中选择所有资源。在 JSON 策略文档中,您必须在 * 元素中使用 Resource

  • 根据标签进行授权 – AWS RoboMaker 不支持根据标签进行授权。此功能允许您在策略条件中使用资源标签

  • 临时凭证- AWS RoboMaker 支持临时凭证。此功能允许您使用联合身份验证登录、代入 IAM 角色或者代入跨账户角色。您可以通过调用AssumeRole或之类的 AWS STS API 操作来获取临时安全证书GetFederationToken

  • 服务相关角色 - AWS RoboMaker 支持服务角色。此功能允许服务代表您代入服务相关角色。此角色允许服务访问其他服务中的资源以代表您完成操作。服务相关角色显示在您的 IAM 账户中,并归该服务所有。IAM 管理员可以查看但不能编辑服务相关角色的权限。

  • 服务角色 - AWS RoboMaker 支持服务角色。此功能允许服务代表您担任服务角色。此角色允许服务访问其他服务中的资源以代表您完成操作。服务角色显示在您的 IAM 账户中,并归该账户所有。这意味着,IAM 管理员可以更改该角色的权限。但是,这可能会中断服务的功能。

身份验证和访问控制故障排除

使用以下信息可帮助您诊断和修复在使用 IAM 工作时可能遇到的常见问题。

我无权在以下位置执行操作 AWS RoboMaker

如果您在中收到错误消息 AWS Management Console ,提示您无权执行某项操作,则必须联系向您提供用户名和密码的管理员。

当名为的 IAM 用户 my-user-name尝试使用控制台执行 CreateRobotApplication 操作但没有权限时,就会出现以下示例错误。

User: arn:aws:iam::123456789012:user/my-user-name is not authorized to perform: aws-robomaker:CreateRobotApplication on resource: my-example-robot-application

对于本示例,请要求您的管理员更新您的策略,以允许您使用 aws-robomaker:CreateRobotApplication 操作访问 my-example-robot-application 资源。

我是一名管理员,想允许其他人访问 AWS RoboMaker

要允许其他人访问, AWS RoboMaker 您必须为需要访问的人员或应用程序创建一个 IAM 实体(用户或角色)。它们将使用该实体的凭证访问 AWS。然后,您必须将策略附加到实体,以便在 AWS RoboMaker中向其授予正确的权限。

要立即开始,请参阅IAM 入门