Gerenciando o acesso ao Amazon Braket - Amazon Braket

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciando o acesso ao Amazon Braket

Este capítulo descreve as permissões necessárias para executar o Amazon Braket ou restringir o acesso de usuários e funções específicos. Você pode conceder (ou negar) as permissões necessárias para qualquer usuário ou função em sua conta. Para fazer isso, anexe a política apropriada do Amazon Braket a esse usuário ou função em sua conta, conforme descrito nas seções a seguir.

Como pré-requisito, você deve habilitar o Amazon Braket. Para habilitar o Braket, certifique-se de fazer login como usuário ou função que tenha (1) permissões de administrador ou (2) tenha a AmazonBraketFullAccesspolítica atribuída e tenha permissões para criar buckets do Amazon Simple Storage Service (Amazon S3).

Recursos do Amazon Braket

O Braket cria um tipo de recurso: o recurso de tarefa quântica. O Amazon Resource Name (ARN) para esse tipo de recurso é o seguinte:

  • Nome do recurso:AWS: :Service: :Braket

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

Cadernos e funções

Você pode usar o tipo de recurso notebook no Braket. Um notebook é um SageMaker recurso da Amazon que o Braket pode compartilhar. Para usar um notebook com o Braket, você deve especificar uma função do IAM com um nome que comece com. AmazonBraketServiceSageMakerNotebook

Para criar um notebook, você deve usar uma função com permissões de administrador ou que tenha a seguinte política embutida anexada a ela.

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

Para criar a função, siga as etapas fornecidas na página Criar um caderno de anotações ou peça ao administrador que a crie para você. Certifique-se de que a AmazonBraketFullAccesspolítica esteja anexada.

Depois de criar a função, você pode reutilizá-la em todos os cadernos que você lançar no futuro.

Sobre a AmazonBraketFullAccess política

A AmazonBraketFullAccesspolítica concede permissões para as operações do Amazon Braket, incluindo permissões para essas tarefas:

  • Baixe contêineres do Amazon Elastic Container Registry — Para ler e baixar imagens de contêineres que são usadas para o recurso Amazon Braket Hybrid Jobs. Os contêineres devem estar em conformidade com o formato “arn:aws:ecr: ::repository/amazon-braket”.

  • Mantenha AWS CloudTrail registros — para todas as ações de descrever, obter e listar, além de iniciar e interromper consultas, testar filtros de métricas e filtrar eventos de registro. O arquivo de AWS CloudTrail log contém um registro de todas as atividades do Amazon API Braket que ocorrem em sua conta.

  • Utilize funções para controlar recursos — Para criar uma função vinculada ao serviço em sua conta. A função vinculada ao serviço tem acesso aos AWS recursos em seu nome. Ele pode ser usado somente pelo serviço Amazon Braket. Além disso, passar funções do IAM para o Amazon CreateJob API Braket, criar uma função e anexar uma política com escopo AmazonBraketFullAccess definido à função.

  • Crie grupos de log, eventos de log e grupos de log de consulta para manter arquivos de log de uso de sua conta — Para criar, armazenar e visualizar informações de registro sobre o uso do Amazon Braket em sua conta. Métricas de consulta em grupos de registros de trabalhos híbridos. Abrange o caminho correto do Braket e permita colocar dados de registro. Insira dados métricos CloudWatch.

  • Crie e armazene dados nos buckets do Amazon S3 e liste todos os buckets — Para criar buckets do S3, liste os buckets do S3 em sua conta e coloque objetos e obtenha objetos de qualquer bucket em sua conta cujo nome comece com amazon-braket-. Essas permissões são necessárias para que o Braket coloque arquivos contendo resultados de tarefas quânticas processadas no bucket e os recupere do bucket.

  • Passe as funções do IAM — Para passar as funções do IAM para CreateJob API o.

  • Amazon SageMaker Notebook — Para criar e gerenciar instâncias de SageMaker notebook com o escopo do recurso “arn:aws:sagemaker: ::notebook-instance/amazon-braket-”.

  • Valide as cotas de serviço — Para criar SageMaker notebooks e trabalhos do Amazon Braket Hybrid, sua contagem de recursos não pode exceder as cotas da sua conta.

Conteúdo da política

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

Sobre a AmazonBraketJobsExecutionPolicy política

A AmazonBraketJobsExecutionPolicypolítica concede permissões para funções de execução usadas no Amazon Braket Hybrid Jobs da seguinte forma:

  • Baixe contêineres do Amazon Elastic Container Registry - Permissões para ler e baixar imagens de contêineres que são usadas para o recurso Amazon Braket Hybrid Jobs. Os contêineres devem estar em conformidade com o formato “arn:aws:ecr: *:*:repository/amazon-braket*”.

  • Crie grupos de log e eventos de log e consulte grupos de log para manter os arquivos de log de uso de sua conta — Crie, armazene e visualize informações de registro sobre o uso do Amazon Braket em sua conta. Métricas de consulta em grupos de registros de trabalhos híbridos. Abrange o caminho correto do Braket e permita colocar dados de registro. Insira dados métricos CloudWatch.

  • Armazene dados em buckets do Amazon S3 — Liste os buckets do S3 em sua conta, coloque objetos e obtenha objetos de qualquer bucket em sua conta que comece com amazon-braket - em seu nome. Essas permissões são necessárias para que o Braket coloque arquivos contendo resultados de tarefas quânticas processadas no bucket e os recupere do bucket.

  • Passe as funções do IAM — Passando as funções do IAM para CreateJob API o. As funções devem estar em conformidade com o formato 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"
				}
			}
		}
	]
}

Restringir o acesso do usuário a determinados dispositivos

Para restringir o acesso de determinados usuários a determinados dispositivos Braket, você pode adicionar uma política de negação de permissões a uma função específicaIAM.

As ações a seguir podem ser restringidas com essas permissões:

  • CreateQuantumTask- negar a criação de tarefas quânticas em dispositivos específicos.

  • CreateJob- negar a criação de empregos híbridos em dispositivos específicos.

  • GetDevice- negar a obtenção de detalhes de dispositivos especificados.

O exemplo a seguir restringe o acesso a todas as QPUs do. Conta da AWS 123456789012

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

Para adaptar esse código, substitua o Número do Amazon Recurso (ARN) do dispositivo restrito pela string mostrada no exemplo anterior. Essa string fornece o valor do recurso. No Braket, um dispositivo representa um QPU ou simulador que você pode chamar para executar tarefas quânticas. Os dispositivos disponíveis estão listados na página Dispositivos. Há dois esquemas usados para especificar o acesso a esses dispositivos:

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

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

Aqui estão alguns exemplos de vários tipos de acesso a dispositivos

  • Para selecionar todas as QPUs em todas as regiões: arn:aws:braket:*:*:device/qpu/*

  • Para selecionar todas as QPUs SOMENTE na região us-west-2: arn:aws:braket:us-west-2:123456789012:device/qpu/*

  • Da mesma forma, para selecionar SOMENTE todas as QPUs na região us-west-2 (já que os dispositivos são um recurso de serviço, não um recurso do cliente): arn:aws:braket:us-west-2:* :device/qpu/*

  • Para restringir o acesso a todos os dispositivos de simulador sob demanda: arn:aws:braket:* :123456789012:device/quantum-simulator/*

  • Para restringir o acesso ao IonQ Harmony dispositivo na região us-east-1: arn:aws:braket:us-east-1:123456789012:device/ionq/Harmony

  • Para restringir o acesso a dispositivos de um determinado provedor (por exemplo, a Rigetti QPU dispositivos): arn:aws:braket:* :123456789012:device/qpu/rigetti/*

  • Para restringir o acesso ao TN1 dispositivo: arn:aws:braket:* :123456789012:device/quantum-simulator/amazon/tn1

Atualizações do Amazon Braket para políticas gerenciadas AWS

A tabela a seguir fornece detalhes sobre as atualizações das políticas AWS gerenciadas do Braket desde que esse serviço começou a rastrear essas alterações.

Alteração Descrição Data

AmazonBraketFullAccess- Política de acesso total para Braket

Foram adicionadas as ações servicequotas: GetServiceQuota e cloudwatch: GetMetricData a serem incluídas na política. AmazonBraketFullAccess

.

24 de março de 2023

AmazonBraketFullAccess- Política de acesso total para Braket

Objetivo ajustado do Braket: PassRole permissões AmazonBraketFullAccess para incluir o service-role/ caminho.

29 de novembro de 2021

AmazonBraketJobsExecutionPolicy- Política de execução de trabalhos híbridos para Amazon Braket Hybrid Jobs

Braket atualizou o ARN da função de execução de trabalhos híbridos para incluir o caminho. service-role/

29 de novembro de 2021

Braket começou a rastrear as mudanças

A Braket começou a monitorar as mudanças em suas políticas AWS gerenciadas.

29 de novembro de 2021

Restrinja o acesso do usuário a determinadas instâncias do notebook

Para restringir o acesso de determinados usuários a instâncias específicas do notebook Braket, você pode adicionar uma política de negação de permissões a uma função, usuário ou grupo específico.

O exemplo a seguir usa variáveis de política para restringir com eficiência as permissões para iniciar, interromper e acessar instâncias específicas do notebook no Conta da AWS 123456789012, que é nomeado de acordo com o usuário que deveria ter acesso (por exemplo, o usuário Alice teria acesso a uma instância do notebook chamadaamazon-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}*" ] } ] }

Restringir o acesso do usuário a determinados buckets do S3

Para restringir o acesso de determinados usuários a buckets específicos do Amazon S3, você pode adicionar uma política de negação a uma função, usuário ou grupo específico.

O exemplo a seguir restringe as permissões para recuperar e colocar objetos em um S3 bucket específico (arn:aws:s3:::amazon-braket-us-east-1-123456789012-Alice) e também restringe a listagem desses objetos.

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

Para restringir o acesso ao bucket para uma determinada instância do notebook, você pode adicionar a política anterior à função de execução do notebook.