管理对 Amazon Braket 的访问权限 - Amazon Braket

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

管理对 Amazon Braket 的访问权限

本章介绍运行 Amazon Braket 或限制特定用户和角色访问所需的权限。您可以向账户中的任何用户或角色授予(或拒绝)所需的权限。为此,请将相应的 Amazon Braket 政策附加到您账户中的该用户或角色,如以下各节所述。

作为先决条件,您必须启用 Amazon Brak et。要启用 Braket,请务必以拥有 (1) 管理员权限或 (2) 已分配AmazonBraketFullAccess策略并有权创建亚马逊简单存储服务 (Amazon S3) 存储桶的用户或角色登录。

亚马逊 Braket 资源

Braket 创建了一种资源:量子任务资源。此资源类型的亚马逊资源名称 (ARN) 如下所示:

  • 资源名称::: 服务AWS:: Braket

  • ARN Regex:arn:$ {Partition}: b raket:$ {Region}: $ {Region}: $ {Account}: quantum-task/$ {} RandomId

笔记本和角色

您可以在 Braket 中使用笔记本资源类型。笔记本是 Braket 能够共享的 Amazon SageMaker 资源。要将笔记本与 Braket 配AmazonBraketServiceSageMakerNotebook合使用,必须指定名称以开头的 IAM 角色。

要创建笔记本,必须使用具有管理员权限或附加了以下内联策略的角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateRole", "Resource": "arn:aws:iam::*:role/service-role/AmazonBraketServiceSageMakerNotebookRole*" }, { "Effect": "Allow", "Action": "iam:CreatePolicy", "Resource": [ "arn:aws:iam::*:policy/service-role/AmazonBraketServiceSageMakerNotebookAccess*", "arn:aws:iam::*:policy/service-role/AmazonBraketServiceSageMakerNotebookRole*" ] }, { "Effect": "Allow", "Action": "iam:AttachRolePolicy", "Resource": "arn:aws:iam::*:role/service-role/AmazonBraketServiceSageMakerNotebookRole*", "Condition": { "StringLike": { "iam:PolicyARN": [ "arn:aws:iam::aws:policy/AmazonBraketFullAccess", "arn:aws:iam::*:policy/service-role/AmazonBraketServiceSageMakerNotebookAccess*", "arn:aws:iam::*:policy/service-role/AmazonBraketServiceSageMakerNotebookRole*" ] } } } ] }

要创建该角色,请按照 “创建笔记本” 页面中给出的步骤进行操作,或者让管理员为您创建该角色。确保已附上该AmazonBraketFullAccess政策。

创建角色后,您可以将该角色重复用于将来启动的所有笔记本电脑。

关于 AmazonBraketFullAccess政策

AmazonBraketFullAccess政策授予 Amazon Braket 操作权限,包括执行以下任务的权限:

  • 从 Amazon Elastic Container Re gistry 下载容器 — 读取和下载用于 Amazon Braket Hybrid Jobs 功能的容器镜像。容器必须符合 “arn: aws: ecr:: repository/amazon-braket” 的格式。

  • 保留 AWS CloudTrail 日志-除了启动和停止查询、测试指标筛选器和筛选日志事件外,还适用于所有描述获取出操作。该 AWS CloudTrail 日志文件包含您的账户中发生的所有 Amazon Braket API 活动的记录。

  • 利用角色控制资源-在您的账户中创建服务相关角色。服务相关角色可以代表您访问 AWS 资源。它只能由 Amazon Braket 服务使用。此外,还可以将 IAM 角色传递给 Amazon Braket CreateJobAPI,创建角色并将范围限定为的策略附加 AmazonBraketFullAccess 到该角色。

  • 创建日志组、日志事件和查询日志组,以维护您账户的使用情况日志文件 — 创建、存储和查看账户中有关 Amazon Braket 使用情况的日志信息。查询混合作业日志组的指标。包含正确的 Braket 路径并允许放置日志数据。将指标数据放入 CloudWatch。

  • 在 Amazon S3 存储桶中创建和存储数据,并列出所有存储桶 — 要创建 S3 存储桶,请列出您账户中的 S3 存储桶,然后将对象放入账户中名称以 amazon-braket-开头的任何存储桶并从中获取对象。Braket 需要这些权限才能将包含已处理量子任务结果的文件放入存储桶并从存储桶中检索。

  • 传递 IAM 角色 — 将 IAM 角色传递给CreateJobAPI。

  • 亚马逊 SageMaker 笔记本 — 创建和管理范围为 “arn: aws: sagemaker:: notebook-instance/amazon-braket-” 中资源的SageMaker笔记本实例。

  • 验证服务配额 — 要创建 SageMaker笔记本和 Amazon Braket Hybrid 任务,您的资源数量不能超过账户的配额

政策内容

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:CreateBucket",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::amazon-braket-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "servicequotas:GetServiceQuota",
                "cloudwatch:GetMetricData"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/amazon-braket*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:Describe*",
                "logs:Get*",
                "logs:List*",
                "logs:StartQuery",
                "logs:StopQuery",
                "logs:TestMetricFilter",
                "logs:FilterLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/braket*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:ListNotebookInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedNotebookInstanceUrl",
                "sagemaker:CreateNotebookInstance",
                "sagemaker:DeleteNotebookInstance",
                "sagemaker:DescribeNotebookInstance",
                "sagemaker:StartNotebookInstance",
                "sagemaker:StopNotebookInstance",
                "sagemaker:UpdateNotebookInstance",
                "sagemaker:ListTags",
                "sagemaker:AddTags",
                "sagemaker:DeleteTags"
            ],
            "Resource": "arn:aws:sagemaker:*:*:notebook-instance/amazon-braket-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:DescribeNotebookInstanceLifecycleConfig",
                "sagemaker:CreateNotebookInstanceLifecycleConfig",
                "sagemaker:DeleteNotebookInstanceLifecycleConfig",
                "sagemaker:ListNotebookInstanceLifecycleConfigs",
                "sagemaker:UpdateNotebookInstanceLifecycleConfig"
            ],
            "Resource": "arn:aws:sagemaker:*:*:notebook-instance-lifecycle-config/amazon-braket-*"
        },
        {
            "Effect": "Allow",
            "Action": "braket:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/braket.amazonaws.com/AWSServiceRoleForAmazonBraket*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": "braket.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::*:role/service-role/AmazonBraketServiceSageMakerNotebookRole*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": [
                        "sagemaker.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::*:role/service-role/AmazonBraketJobsExecutionRole*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": [
                        "braket.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:GetQueryResults"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogStream",
                "logs:CreateLogGroup"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/braket*"
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:PutMetricData",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "/aws/braket"
                }
            }
        }
    ]
}

关于 AmazonBraketJobsExecutionPolicy政策

AmazonBraketJobsExecutionPolicy策略授予在 Amazon Braket 混合任务中使用的执行角色的权限,如下所示:

  • 从 Amazon Elastic Container Re gistry 下载容器-读取和下载用于 Amazon Braket Hybrid Jobs 功能的容器镜像的权限。容器必须符合 “arn: aws: ecr: *: *: repository/amazon-braket*” 的格式。

  • 创建日志组、日志事件和查询日志组,以便维护您账户的使用情况日志文件 — 在您的账户中创建、存储和查看有关 Amazon Braket 使用情况的日志信息。查询混合作业日志组的指标。包含正确的 Braket 路径并允许放置日志数据。将指标数据放入 CloudWatch。

  • 将@@ 数据存储在 Amazon S3 存储桶中 — 列出您账户中的 S3 存储桶,将对象放入账户中名称中以 ama zon-braket-开头的任何存储桶并从中获取对象。Braket 需要这些权限才能将包含已处理量子任务结果的文件放入存储桶并从存储桶中检索。

  • 传递 IAM 角色 — 将 IAM 角色传递给 CreateJob API。角色必须符合 arn: aws: iam:: * 的格式。:role/service-role/AmazonBraketJobsExecutionRole

	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"s3:GetObject",
				"s3:PutObject",
				"s3:ListBucket",
				"s3:CreateBucket",
				"s3:PutBucketPublicAccessBlock",
				"s3:PutBucketPolicy"
			],
			"Resource": "arn:aws:s3:::amazon-braket-*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ecr:GetDownloadUrlForLayer",
				"ecr:BatchGetImage",
				"ecr:BatchCheckLayerAvailability"
			],
			"Resource": "arn:aws:ecr:*:*:repository/amazon-braket*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ecr:GetAuthorizationToken"
			],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"braket:CancelJob",
				"braket:CancelQuantumTask",
				"braket:CreateJob",
				"braket:CreateQuantumTask",
				"braket:GetDevice",
				"braket:GetJob",
				"braket:GetQuantumTask",
				"braket:SearchDevices",
				"braket:SearchJobs",
				"braket:SearchQuantumTasks",
				"braket:ListTagsForResource",
				"braket:TagResource",
				"braket:UntagResource"
			],
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"iam:PassRole"
			],
			"Resource": "arn:aws:iam::*:role/service-role/AmazonBraketJobsExecutionRole*",
			"Condition": {
				"StringLike": {
					"iam:PassedToService": [
						"braket.amazonaws.com"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iam:ListRoles"
			],
			"Resource": "arn:aws:iam::*:role/*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"logs:GetQueryResults"
			],
			"Resource": [
				"arn:aws:logs:*:*:log-group:*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"logs:PutLogEvents",
				"logs:CreateLogStream",
				"logs:CreateLogGroup",
				"logs:GetLogEvents",
				"logs:DescribeLogStreams",
				"logs:StartQuery",
				"logs:StopQuery"
			],
			"Resource": "arn:aws:logs:*:*:log-group:/aws/braket*"
		},
		{
			"Effect": "Allow",
			"Action": "cloudwatch:PutMetricData",
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"cloudwatch:namespace": "/aws/braket"
				}
			}
		}
	]
}

限制用户访问某些设备

要限制某些用户访问某些 Braket 设备,您可以为特定IAM角色添加拒绝权限策略。

使用此类权限可以限制以下操作:

  • CreateQuantumTask-拒绝在指定设备上创建量子任务。

  • CreateJob-拒绝在指定设备上创建混合作业。

  • GetDevice-拒绝获取指定设备的详细信息。

以下示例限制了对所有 QPU 的访问权限。 AWS 账户 123456789012

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "braket:CreateQuantumTask", "braket:CreateJob", "braket:GetDevice" ], "Resource": [ "arn:aws:braket:*:*:device/qpu/*" ] } ] }

要改编此代码,请用受限设备的Amazon资源号 (ARN) 代替上一个示例中显示的字符串。此字符串提供资源值。在 Braket 中,设备代表一个 QPU 或模拟器,你可以调用它来运行量子任务。可用设备列在 “设备” 页面上。有两个架构用于指定对这些设备的访问权限:

  • arn:aws:braket:<region>:<account id>:device/qpu/<provider>/<device_id>

  • arn:aws:braket:<region>:<account id>:device/quantum-simulator/<provider>/<device_id>

以下是各种设备访问类型的示例

  • 要选择所有区域的所有 QPU,请执行以下操作:arn:aws:braket:*:*:device/qpu/*

  • 要仅选择 us-west-2 区域的所有 QPU,请执行以下操作:arn:aws:braket:us-west-2:123456789012:device/qpu/*

  • 同样,要仅选择 us-west-2 区域的所有 QPU(因为设备是一种服务资源,而不是客户资源),请执行以下操作:arn:aws:braket:us-west-2:* :device/qpu/*

  • 要限制对所有按需模拟器设备的访问,请执行以下操作:arn:aws:braket:* :123456789012:device/quantum-simulator/*

  • 要限制在 us-east-1 区域访问该IonQ Harmony设备,请执行以下操作:arn:aws:braket:us-east-1:123456789012:device/ionq/Harmony

  • 要限制特定提供商对设备的访问(例如RigettiQPU设备),请执行以下操作:arn:aws:braket:* :123456789012:device/qpu/rigetti/*

  • 要限制对TN1设备的访问,请执行以下操作:arn:aws:braket:* :123456789012:device/quantum-simulator/amazon/tn1

Amazon Braket 更新了托管 AWS 政策

下表提供了自该服务开始跟踪这些更改以来 Braket AWS 托管策略更新的详细信息。

更改 描述 日期

AmazonBraketFullAccess-Braket 的完全访问政策

添加了要包含在策略中的 servicequotas: GetServiceQuotacloudwatch: GetMetricData 操作。AmazonBraketFullAccess

.

2023 年 3 月 24 日

AmazonBraketFullAccess-Braket 的完全访问政策

Braket 调整了 ia PassRole m: 包含service-role/路径的权限。 AmazonBraketFullAccess

2021 年 11 月 29 日

AmazonBraketJobsExecutionPolicy-Amazon Braket Hybrid Jobs 的混合作业执行政策

Braket 更新了混合作业执行角色 ARN,使其包含service-role/了路径。

2021 年 11 月 29 日

Braket 开始追踪更改

Braket 开始跟踪其 AWS 托管策略的变更。

2021 年 11 月 29 日

限制用户访问某些笔记本实例

要限制某些用户访问特定 Braket 笔记本实例,您可以向特定角色、用户或组添加拒绝权限策略。

以下示例使用策略变量有效地限制启动、停止和访问中特定笔记本实例的权限 AWS 账户 123456789012,该实例根据应具有访问权限的用户命名(例如,用户Alice将有权访问名为的笔记本实例amazon-braket-Alice)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "sagemaker:CreateNotebookInstance", "sagemaker:DeleteNotebookInstance", "sagemaker:UpdateNotebookInstance", "sagemaker:CreateNotebookInstanceLifecycleConfig", "sagemaker:DeleteNotebookInstanceLifecycleConfig", "sagemaker:UpdateNotebookInstanceLifecycleConfig" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "sagemaker:DescribeNotebookInstance", "sagemaker:StartNotebookInstance", "sagemaker:StopNotebookInstance", ], "NotResource": [ "arn:aws:sagemaker:*:123456789012:notebook-instance/amazon-braket-${aws:username}" ] }, { "Effect": "Deny", "Action": [ "sagemaker:CreatePresignedNotebookInstanceUrl" ], "NotResource": [ "arn:aws:sagemaker:*:123456789012:notebook-instance/amazon-braket-${aws:username}*" ] } ] }

限制用户对某些 S3 存储桶的访问权限

要限制某些用户访问特定 Amazon S3 存储桶,您可以向特定角色、用户或组添加拒绝策略。

以下示例限制了检索对象并将其放入特定S3存储桶 (arn:aws:s3:::amazon-braket-us-east-1-123456789012-Alice) 的权限,还限制了这些对象的列表。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "s3:ListBucket" ], "NotResource": [ "arn:aws:s3:::amazon-braket-us-east-1-123456789012-Alice" ] }, { "Effect": "Deny", "Action": [ "s3:GetObject" ], "NotResource": [ "arn:aws:s3:::amazon-braket-us-east-1-123456789012-Alice/*" ] } ] }

要限制某个 notebook 实例对存储桶的访问权限,您可以将上述策略添加到笔记本执行角色中。