View a markdown version of this page

Configurar as permissões do IAM para acessar as fontes de dados (para administradores) - SageMaker Inteligência Artificial da Amazon

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á.

Configurar as permissões do IAM para acessar as fontes de dados (para administradores)

Os administradores devem garantir que a função de execução usada pelos JupyterLab aplicativos tenha as permissões necessárias do AWS IAM para acessar os dados por meio das AWS Glue conexões configuradas.

  • Conexões criadas por administradores usando o AWS CLI: Para visualizar as AWS Glue conexões criadas pelos administradores e acessar seus dados, os usuários precisam que o administrador atribua permissões específicas à função de execução de SageMaker IA usada pelo JupyterLab aplicativo no Studio. Isso inclui acesso ao AWS Glue Secrets Manager e permissões específicas do banco de dados. As conexões criadas por administradores são visíveis para todos as aplicações que compartilham um perfil de execução que recebeu as permissões para visualizar bancos de dados ou catálogos específicos do AWS Glue . Para saber mais sobre a lista de permissões necessárias por tipo de fonte de dados, consulte as permissões de conexões definidas por administradores em Admin-defined conexões exigiam permissões do IAM.

  • Conexões criadas por usuários usando a interface de usuário da extensão SQL em JupyterLab: As conexões criadas por perfis de usuário que compartilham a mesma função de execução também serão listadas, a menos que a visibilidade de suas conexões seja reduzida apenas às criadas pelo usuário. As conexões criadas por usuários são marcadas com o perfil do usuário que as criou. Para restringir a capacidade de visualizar, atualizar ou excluir essas conexões criadas por usuários somente ao usuário que as criou, os administradores podem adicionar outras restrições de controle de acesso com base em tags às permissões do IAM do perfil de execução. Para saber qual controle de acesso baseado em tags adicional é necessário, consulte User-defined conexões exigiam permissões do IAM.

Admin-defined conexões exigiam permissões do IAM

Para conceder à função de execução de SageMaker IA usada por seu JupyterLab aplicativo no Studio acesso a uma fonte de dados por meio de uma AWS Glue conexão, anexe a seguinte política embutida à função.

Para ver as permissões específicas e os detalhes da política para cada fonte de dados ou método de autenticação, escolha o tipo de conexão pertinente abaixo.

nota

Recomendamos limitar as permissões da sua política para somente recursos e ações necessários.

Para definir o escopo das políticas e conceder acesso com privilégios mínimos, substitua o asterisco "Resource": ["*"] em sua política por ARNs específicos para os recursos exatos que precisam de acesso. Para obter mais informações sobre como controlar o acesso aos seus recursos, consulte Fine-tune AWS acesso a recursos com permissões granulares de ARN.

nota

É altamente recomendável definir o escopo dessa política apenas para as ações e os recursos necessários.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetS3AndDataSourcesMetadata", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetSchema", "glue:GetTables", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "glue:GetDatabase", "glue:GetTable", "glue:ListSchemas", "glue:GetPartitions" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:connection/*" ] }, { "Sid": "ExecuteQueries", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:RunQuery", "athena:StartSession", "athena:GetQueryResults", "athena:ListWorkGroups", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:GetBucketLocation", "athena:GetDataCatalog", "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "athena:GetWorkGroup" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:athena:us-east-1:111122223333:workgroup/workgroup-name" ] }, { "Sid": "GetGlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:connection/*" ] }, { "Sid": "GetSecrets", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name" ] }, { "Sid": "GetClusterCredentials", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-east-1:111122223333:cluster:cluster-name" ] } ] }
nota

É altamente recomendável definir o escopo dessa política apenas para os recursos necessários.

Para obter mais informações, consulte Exemplos de políticas de permissões do IAM em Documentação do Athena.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetS3AndDataSourcesMetadata", "Effect": "Allow", "Action": [ "glue:GetDatabases", "glue:GetSchema", "glue:GetTables", "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation", "glue:GetDatabase", "glue:GetTable", "glue:ListSchemas", "glue:GetPartitions" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:glue:us-east-2:111122223333:catalog", "arn:aws:glue:us-east-2:111122223333:connection/*" ] }, { "Sid": "ExecuteAthenaQueries", "Effect": "Allow", "Action": [ "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:RunQuery", "athena:StartSession", "athena:GetQueryResults", "athena:ListWorkGroups", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:GetBucketLocation", "athena:GetDataCatalog", "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "athena:GetWorkGroup" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:athena:us-east-2:111122223333:workgroup/workgroup-name" ] }, { "Sid": "GetGlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:us-east-2:111122223333:catalog", "arn:aws:glue:us-east-2:111122223333:connection/*" ] }, { "Sid": "GetSecrets", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name" ] } ] }
nota

É altamente recomendável definir o escopo dessa política apenas para os recursos necessários.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetS3Metadata", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GetGlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:us-east-2:111122223333:catalog", "arn:aws:glue:us-east-2:111122223333:connection/*" ] }, { "Sid": "GetSecrets", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name" ] } ] }
nota

É altamente recomendável definir o escopo dessa política apenas para os recursos necessários.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetS3Metadata", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GetGlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:connection/*", "arn:aws:glue:us-east-1:111122223333:connection/connection-name" ] }, { "Sid": "GetSecrets", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name", "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret-name-with-suffix" ] }, { "Sid": "GetClusterCredentials", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-east-1:111122223333:cluster:cluster-name", "arn:aws:redshift:us-east-1:111122223333:dbuser:cluster-name/db-user-name" ] } ] }
nota

É altamente recomendável definir o escopo dessa política apenas para os recursos necessários.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GetS3Metadata", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "GetGlueConnections", "Effect": "Allow", "Action": [ "glue:GetConnections", "glue:GetConnection" ], "Resource": [ "arn:aws:glue:us-east-2:111122223333:catalog", "arn:aws:glue:us-east-2:111122223333:connection/*" ] }, { "Sid": "GetSecrets", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret-name" ] }, { "Sid": "GetRedshiftServerlessCredentials", "Effect": "Allow", "Action": [ "redshift-serverless:GetCredentials" ], "Resource": [ "arn:aws:redshift-serverless:us-east-2:111122223333:namespace/namespace-id" ] } ] }

User-defined conexões exigiam permissões do IAM

As permissões da política do IAM para um usuário podem explicar a presença da UserProfile tag nos recursos de AWS Glue conexão.

  • Para visualizar AWS Glue conexões:

    • Os usuários podem visualizar todas as conexões que não têm a tag UserProfile (criadas por um administrador).

    • Os usuários podem visualizar as conexões que têm a tag UserProfile com o mesmo valor do nome do perfil do usuário.

    • Os usuários não podem visualizar as conexões que têm a tag UserProfile com um valor diferente do nome do perfil do usuário.

  • Para atualizar ou excluir AWS Glue conexões:

    • Os usuários podem atualizar ou excluir uma conexão que tem a tag UserProfile com o mesmo valor do nome do perfil do usuário.

    • Os usuários não podem atualizar ou excluir uma conexão que tem a tag UserProfile com o mesmo valor do nome do perfil do usuário.

    • Os usuários não podem atualizar ou excluir conexões que não tenham a tag UserProfile.

Para isso, os administradores devem conceder à função de execução usada pelo JupyterLab aplicativo do perfil de usuário permissões adicionais além das permissões de conexões existentes definidas pelo administrador. Especificamente, além das permissões necessárias para acessar AWS Glue conexões definidas pelo administrador, as duas permissões adicionais do IAM a seguir devem ser concedidas à função de execução do usuário:

  • Permissão para criar AWS Glue conexões e associar a UserProfile tag ao valor do nome do perfil do usuário.

  • Permissão para visualizar, atualizar e excluir AWS Glue conexões que tenham a UserProfile tag correspondente ao nome do perfil do usuário.

Essa permissão restringe o acesso às AWS Glue conexões com base em um valor específico da tag do perfil do usuário. Atualize o valor da tag UserProfile com o nome do perfil do usuário que você deseja segmentar.

"Action": [ "glue:GetConnection", "glue:GetConnections" ], "Resource": [ "arn:aws:glue:region:account_id:connection/*" ], "Condition": { "StringEqualsIfExists": { "aws:ResourceTag/UserProfile": "user_profile_name" } }

Essa permissão restringe a capacidade de criar, atualizar e excluir conexões criadas pelo usuário somente às conexões criadas pelo perfil de usuário com o valor de tag UserProfile especificado.

"Action": [ "glue:DeleteConnection", "glue:UpdateConnection", "glue:CreateConnection", "glue:TagResource" ], "Resource": [ "arn:aws:glue:region:account_id:connection/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/UserProfile": "user_profile" } }

Fine-tune AWS acesso a recursos com permissões granulares de ARN

Para um controle mais refinado sobre o acesso aos seus AWS recursos, substitua o recurso curinga "Resource": ["*"] em suas políticas pelos nomes de recursos da Amazon (ARNs) específicos somente dos recursos que exigem acesso. Usar os ARNs exatos em vez de um asterisco restringe o acesso aos recursos pretendidos.

  • Usar ARNs específicos de bucket do Amazon S3

    Por exemplo, "arn:aws:s3:::bucket-name" ou "arn:aws:s3:::bucket-name/*" para operações em nível de bucket ou em nível de objeto.

    Para obter informações sobre todos os tipos de recursos no Amazon S3, consulte Tipos de recursos definidos pelo Amazon S3.

  • Use ARNs AWS Glue de banco de dados específicos

    Por exemplo, "arn:aws:glue:region:account-id:catalog" ou "arn:aws:glue:region:account-id:database/db-name". Para obter informações sobre todos os tipos de recursos em AWS Glue, consulte Tipos de recursos definidos por AWS Glue.

  • Usar ARNs específicos de grupos de trabalho do Athena

    Por exemplo, "arn:aws:athena:region:account-id:workgroup/workgroup-name". Para obter informações sobre todos os tipos de recursos no Athena, consulte Tipos de recursos definidos pelo Athena.

  • Use ARNs AWS secretos específicos do Secrets Manager

    Por exemplo, "arn:aws:secretsmanager:region:account-id:secret:secret-name". Para obter informações sobre todos os tipos de recursos no AWS Secrets Manager, consulte Tipos de recursos definidos pelo AWS Secrets Manager

  • Usar ARNs específicos de cluster do Amazon Redshift

    Por exemplo, "arn:aws:redshift:region:account-id:cluster:cluster-name". Para obter informações sobre os tipos de recursos no Amazon Redshift, consulte Tipos de recursos definidos pelo Amazon Redshift. Para obter informações sobre todos os tipos de recursos no Redshift Serverless, consulte Tipos de recursos definidos pelo Redshift Serverless.