Amazon Braket へのアクセスを管理する - Amazon Braket

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Braket へのアクセスを管理する

この章では、Amazon Braket を実行したり、特定のユーザーやロールのアクセスを制限したりするために必要な権限について説明します。必要な権限は、アカウント内のどのユーザーまたはロールにも付与 (または拒否) できます。そのためには、以下のセクションで説明するように、アカウントのそのユーザーまたはロールに適切な Amazon Braket ポリシーをアタッチします。

前提条件として、Amazon Braket を有効にします。Braket を有効にするには、必ず (1) 管理者権限を持つユーザーまたはロールとしてサインインするか、(2) AmazonBraketFullAccessポリシーが割り当てられていて Amazon Simple Storage Service (Amazon S3) バケットを作成する権限を持つユーザーまたはロールとしてサインインしてください。

Amazon Braket のリソース

Braket は、クォンタムタスクリソースという 1 つのタイプのリソースを作成します。このリソースタイプの Amazon リソースネーム (ARN) は次のとおりです。

  • リソース名:: サービスAWS:: ブラケット

  • ARN 正規表現:arn: $ {パーティション}: ブラケット:$ {地域}: $ {アカウント}: quantum-task/$ {} RandomId

ノートブックとロール

Braket ではノートブックリソースタイプを使用できます。ノートブックは Braket が共有できる Amazon SageMaker リソースです。Braket でノートブックを使用するには、で始まる名前の IAM ロールを指定する必要があります。AmazonBraketServiceSageMakerNotebook

ノートブックを作成するには、管理者権限を持つロール、または以下のインラインポリシーがアタッチされたロールを使用する必要があります。

{ "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 レジストリからコンテナをダウンロードする — Amazon Braket ハイブリッドジョブ機能に使用されるコンテナイメージを読み込んでダウンロードします。コンテナは「arn: aws: ecr:: repository/amazon-braket」の形式に準拠している必要があります。

  • AWS CloudTrail ログを保存 — クエリの開始と停止メトリクスフィルタのテスト、ログイベントのフィルタリングに加えて、説明、取得一覧表示のすべてのアクションに適用されます。 AWS CloudTrail ログファイルには、アカウントで発生したすべての Amazon Braket API アクティビティの記録が含まれます。

  • ロールを利用してリソースを管理 — アカウントにサービスにリンクされたロールを作成します。サービスにリンクされたロールは、 AWS ユーザーに代わってリソースにアクセスできます。Amazon Braket サービスでのみ使用できます。また、IAM ロールを Amazon Braket CreateJob API に渡し、ロールを作成して、 AmazonBraketFullAccess そのロールにスコープが設定されたポリシーをアタッチすることもできます。

  • アカウントの使用状況ログファイルを管理するために、ロググループ、ログイベント、クエリロググループを作成する — アカウント内の Amazon Braket の使用状況に関するロギング情報を作成、保存、表示する。ハイブリッドジョブのロググループのクエリメトリクス。適切な Braket パスを含め、ログデータを入力できるようにする。メトリックデータを入力してください。 CloudWatch

  • Amazon S3 バケットにデータを作成して保存し、すべてのバケットを一覧表示する — S3 バケットを作成するには、アカウント内の S3 バケットを一覧表示し、名前が amazon-braket-で始まるアカウントのバケットにオブジェクトを入れたり取得したりします。Braket が処理済みの量子タスクの結果を含むファイルをバケットに入れたり、バケットから取得したりするには、これらの権限が必要です。

  • IAM ロールを渡す — IAM ロールをに渡します。CreateJob API

  • Amazon 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 コンテナレジストリからのコンテナのダウンロード-Amazon Braket ハイブリッドジョブ機能に使用されるコンテナイメージを読み取り、ダウンロードする権限。コンテナは「arn: aws: ecr: *: repository/amazon-braket*」の形式に準拠している必要があります。

  • アカウントの使用状況ログファイルを管理するために、ロググループを作成し、イベントを記録し、ロググループをクエリします。アカウントの Amazon Braket の使用状況に関するログ情報を作成、保存、表示します。ハイブリッドジョブのロググループのクエリメトリクス。適切な Braket パスを含め、ログデータを入力できるようにする。メトリックデータを入力してください。 CloudWatch

  • Amazon S3 バケットにデータを保存 — アカウント内の S3 バケットを一覧表示し、名前に amazon-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 またはシミュレーターを表します。使用可能なデバイスは、デバイスページに一覧表示されます。これらのデバイスへのアクセスを指定するために使用するスキーマは 2 つあります。

  • 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 のフルアクセスポリシー

ポリシーにサービスクォータ:GetServiceQuotaアクションと cloudwatch: GetMetricData アクションを追加しました。AmazonBraketFullAccess

.

2023 年 3 月 24 日

AmazonBraketFullAccess-Braket のフルアクセスポリシー

ブラケット調整済み iam: PassRole AmazonBraketFullAccess パスを含めるための権限。service-role/

2021 年 11 月 29 日

AmazonBraketJobsExecutionPolicy-Amazon Braket ハイブリッドジョブのハイブリッドジョブ実行ポリシー

Braket は、パスを含むようにハイブリッドジョブ実行ロール ARN を更新しました。service-role/

2021 年 11 月 29 日

Braket は変更の追跡を開始しました。

Braket AWS は管理ポリシーの変更を追跡し始めました。

2021 年 11 月 29 日

特定のノートブックインスタンスへのユーザーアクセスを制限します。

特定のユーザーによる特定の Braket ノートブックインスタンスへのアクセスを制限するには、特定のロール、ユーザー、またはグループにアクセス許可拒否ポリシーを追加できます

以下の例では、ポリシー変数を使用して、内の特定のノートブックインスタンスを起動、停止、およびアクセスするための権限を効率的に制限しています。このインスタンスには AWS アカウント 123456789012、アクセス権が必要なユーザー (たとえば、という名前のノートブックインスタンスへのアクセス権が付与されます) amazon-braket-Alice に基づいて名前が付けられています。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/*" ] } ] }

特定のノートブックインスタンスのバケットへのアクセスを制限するには、前述のポリシーをノートブック実行ロールに追加します。