Execute consultas como uma função do IAM na Amazon QuickSight - Amazon QuickSight

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

Execute consultas como uma função do IAM na Amazon QuickSight

Você pode aprimorar a segurança dos dados usando políticas de acesso refinadas em vez de permissões mais amplas para fontes de dados conectadas ao Amazon Athena, Amazon Redshift ou Amazon S3. Você começa criando um perfil do AWS Identity and Access Management (IAM) com permissões a serem ativadas quando uma pessoa ou uma API inicia uma consulta. Em seguida, um QuickSight administrador ou desenvolvedor da Amazon atribui a função do IAM a uma fonte de dados do Athena ou do Amazon S3. Com o perfil estabelecido, qualquer pessoa ou API que execute a consulta tem as permissões exatas necessárias para executá-la.

Aqui estão algumas coisas a considerar antes de se comprometer com a implementação de perfis run-as para aprimorar a segurança dos dados:

  • Explique como a segurança adicional funciona a seu favor.

  • Trabalhe com seu QuickSight administrador para saber se a adição de funções às fontes de dados ajuda você a atender melhor às suas metas ou requisitos de segurança.

  • Pergunte se esse tipo de segurança, pelo número de fontes de dados, pessoas e aplicações envolvidas, pode ser documentado e mantido de forma viável pela sua equipe. Se negativo, quem fará essa parte do trabalho?

  • Em uma organização estruturada, localize as partes interessadas em equipes paralelas nos departamentos de Operações, Desenvolvimento e Suporte de TI. Solicite a experiência deles, os conselhos e a disponibilidade de apoiar seu plano.

  • Antes de iniciar seu projeto, considere fazer uma prova de conceito que envolva as pessoas que precisam acessar os dados.

As seguintes regras se aplicam ao uso de perfis run-as com o Athena, Amazon Redshift e Amazon S3:

  • Cada fonte de dados pode ter somente uma associada RoleArn. Os consumidores da fonte de dados, que normalmente acessam conjuntos de dados e elementos visuais, podem gerar muitos tipos diferentes de consultas. O perfil estabelece limites sobre quais consultas funcionam e quais não funcionam.

  • O ARN deve corresponder a uma função do IAM da Conta da AWS mesma QuickSight instância que o usa.

  • A função do IAM deve ter uma relação de confiança que QuickSight permita assumir a função.

  • A identidade que chama as QuickSight APIs deve ter permissão para transmitir a função antes de poder atualizar a RoleArn propriedade. Você só precisa aprovar o perfil ao criar ou atualizar o ARN do perfil. As permissões não são reavaliadas posteriormente. Da mesma forma, a permissão não é necessária quando o ARN do perfil é omitido.

  • Quando o ARN do perfil é omitido, a fonte de dados do Athena ou do Amazon S3 usa o perfil em toda a conta e as políticas de redução de escopo.

  • Quando o ARN do perfil está presente, o perfil em toda a conta e todas as políticas de redução de escopo são ignoradas. Para fontes de dados do Athena, as permissões do Lake Formation não são ignoradas.

  • Para fontes de dados do Amazon S3, tanto o arquivo de manifesto quanto os dados especificados pelo arquivo de manifesto devem estar acessíveis usando o perfil do IAM.

  • A string ARN precisa corresponder a uma função existente do IAM no Conta da AWS e Região da AWS onde os dados estão localizados e consultados.

Quando QuickSight se conecta a outro serviço em AWS, ele usa uma função do IAM. Por padrão, essa versão menos granular da função é criada por QuickSight para cada serviço que ela usa, e a função é gerenciada pelos Conta da AWS administradores. Ao adicionar um ARN de perfil do IAM com uma política de permissões personalizada, você substitui o perfil mais amplo das suas fontes de dados que precisam de proteção extra. Para obter mais informações sobre políticas, consulte Criar uma política gerenciada pelo cliente no Guia do usuário do IAM.

Executar consultas com fontes de dados do Athena

Use a API para anexar o ARN à fonte de dados do Athena. Para fazer isso, adicione o ARN da função na RoleArnpropriedade de. AthenaParameters Para verificação, você pode ver o ARN do perfil na caixa de diálogo Editar fonte de dados do Athena. No entanto, o ARN da função é um campo somente para leitura.

O pop-up de Editar fonte de dados do Athena que exibe o ARN do perfil.

Para começar, você precisa de um perfil do IAM personalizado, que demonstramos no exemplo a seguir.

Lembre-se de que o exemplo de código a seguir serve apenas para fins de aprendizado. Use o exemplo somente em um ambiente temporário de desenvolvimento e teste e não em um ambiente de produção. A política nesse exemplo não protege nenhum recurso específico, que deve estar em uma política implantável. Além disso, mesmo para desenvolvimento, você precisa adicionar as informações AWS da sua própria conta.

Os comandos a seguir criam uma nova função simples e anexam algumas políticas que concedem permissões QuickSight a.

aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Depois de identificar ou criar uma função do IAM para usar com cada fonte de dados, anexe as políticas usando attach-role-policy o.

aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1

Depois de verificar suas permissões, você pode usar a função nas fontes de QuickSight dados criando uma nova função ou atualizando uma função existente. Ao usar esses comandos, atualize o Conta da AWS ID Região da AWS para que corresponda ao seu.

Lembre-se de que esses trechos de código de exemplo não são para ambientes de produção. AWS recomenda fortemente que você identifique e use um conjunto de políticas de privilégios mínimos para seus casos de produção.

aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'

Executar consultas com fontes de dados do Amazon Redshift

Conecte seus dados do Amazon Redshift com o perfil run-as para aprimorar sua segurança de dados com políticas de acesso refinadas. Você pode criar um perfil run-as para fontes de dados do Amazon Redshift que usam uma rede pública ou uma conexão VPC. Você especifica o tipo de conexão que deseja usar na caixa de diálogo Editar fonte de dados do Amazon Redshift. A função run-as não é compatível com fontes de dados do Amazon Redshift Serverless.

A imagem abaixo mostra uma fonte de dados do Amazon Redshift que usa o tipo de conexão Rede pública.

O pop-up Editar fonte de dados do Amazon S3 que exibe o tipo de conexão.

Para começar, você precisa de um perfil do IAM personalizado, que demonstramos no exemplo a seguir. Os comandos a seguir criam um exemplo de nova função e anexam políticas que concedem permissões QuickSight a.

aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Depois de identificar ou criar um perfil do IAM para usar com cada fonte de dados, anexe as políticas com uma attach-role-policy. Se a redshift:GetClusterCredentialsWithIAM permissão estiver anexada à função que você deseja usar, os valores de DatabaseUser e DatabaseGroups são opcionais.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }

O exemplo acima cria uma fonte de dados que usa os parâmetros RoleARNDatabaseUser, e DatabaseGroups IAM. Se você quiser estabelecer a conexão somente por meio do RoleARN parâmetro IAM, anexe a redshift:GetClusterCredentialsWithIAM permissão à sua função, mostrada no exemplo abaixo.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"

Depois de verificar suas permissões, você pode usar a função nas fontes de QuickSight dados criando uma nova função ou atualizando uma função existente. Ao usar esses comandos, atualize o ID da AWS conta e a AWS região para que correspondam aos seus.

aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "redshiftdemocluster", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Se sua fonte de dados usa o tipo de conexão VPC, use a configuração de VPC a seguir.

{ "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam vpc", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "vpcdemo", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Se sua fonte de dados usa a redshift:GetClusterCredentialsWithIAM permissão e não usa os DatabaseGroups parâmetros DatabaseUser ou, conceda à função acesso a algumas ou a todas as tabelas no esquema. Para ver se uma função recebeu SELECT permissões para uma tabela específica, insira o seguinte comando no Amazon Redshift Query Editor.

SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:RoleName' AND t.tablename = tableName

Para obter mais informações sobre a SELECT ação no Amazon Redshift Query Editor, consulte SELECT.

Para conceder SELECT permissões para a função, insira o seguinte comando no Amazon Redshift Query Editor.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Para obter mais informações sobre a GRANT ação no Amazon Redshift Query Editor, consulte GRANT.

Executar consultas com fontes de dados do Amazon S3

As fontes de dados do Amazon S3 contêm um arquivo de manifesto que é QuickSight usado para encontrar e analisar seus dados. Você pode fazer upload de um arquivo de manifesto JSON por meio do QuickSight console ou fornecer uma URL que aponte para um arquivo JSON em um bucket do S3. Se você optar por fornecer uma URL, QuickSight deverá receber permissão para acessar o arquivo no Amazon S3. Use o console de QuickSight administração para controlar o acesso ao arquivo de manifesto e aos dados aos quais ele faz referência.

Com a RoleArnpropriedade, você pode conceder acesso ao arquivo de manifesto e aos dados aos quais ele faz referência por meio de um papel personalizado do IAM que substitui o papel de toda a conta. Use a API para anexar o ARN ao arquivo de manifesto da fonte de dados do Amazon S3. Para fazer isso, inclua o ARN da função na RoleArnpropriedade de S3Parameters. Para verificação, você pode ver o ARN do perfil na caixa de diálogo Editar fonte de dados do S3. No entanto, o ARN do perfil é um campo de somente leitura, como mostrado na captura de tela a seguir.

O pop-up Editar fonte de dados do Amazon S3 que exibe o ARN do perfil.

Para começar, crie um arquivo de manifesto do Amazon S3. Em seguida, você pode enviá-lo para a Amazon QuickSight ao criar um novo conjunto de dados do Amazon S3 ou colocar o arquivo no bucket do Amazon S3 que contém seus arquivos de dados. Observe o seguinte exemplo para ver a aparência de um arquivo de manifesto:

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

Para obter instruções sobre como criar um arquivo de manifesto, consulte Formatos compatíveis para arquivos manifesto do Amazon S3.

Depois de criar um arquivo de manifesto e adicioná-lo ao seu bucket do Amazon S3 ou carregá-lo QuickSight, crie ou atualize uma função existente no IAM que s3:GetObject conceda acesso. O exemplo a seguir ilustra como atualizar uma função existente do IAM com a AWS API:

aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*" } ] }'

Depois que sua política conceder acesso a s3:GetObject, você poderá começar a criar fontes de dados que apliquem a put-role-policy atualizada ao arquivo de manifesto da fonte de dados do Amazon S3.

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --data-source-id "s3-run-as-role-demo-source" \ --cli-input-json '{ "Name": "S3 with a custom Role", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket", "ManifestFileLocation": { "Bucket": "s3-bucket-name", "Key": "manifest.json" } } } }'

Depois de verificar suas permissões, você pode usar a função nas fontes de QuickSight dados, criando uma nova função ou atualizando uma função existente. Ao usar esses comandos, certifique-se de atualizar o Conta da AWS ID e corresponder Região da AWS ao seu.