Configurar permissões do IAM
O Amazon Redshift fornece a política gerenciada AmazonRedshiftDataFullAccess
. Esta política fornece acesso total às operações da API de dados do Amazon Redshift. Esta política também permite acesso com escopo específico ao Amazon Redshift, ao AWS Secrets Manager e às operações de API do IAM necessárias para autenticar e acessar um cluster do Amazon Redshift ou um grupo de trabalho do Redshift sem servidor.
Você também pode criar sua própria política do IAM que permite acesso a recursos específicos. Para criar sua política, use a política AmazonRedshiftDataFullAccess
como seu modelo inicial. Depois de criar sua política, adicione-a a cada usuário que requer acesso à API de dados.
Considere os seguintes requisitos da política do IAM associada ao usuário:
-
Se você usar o AWS Secrets Manager para autenticar, confirme se a política permite o uso da ação
secretsmanager:GetSecretValue
para recuperar o segredo marcado com a chaveRedshiftDataFullAccess
. -
Se você usar credenciais temporárias a fim de autenticar em um cluster, confirme se a política permitirá o uso da ação
redshift:GetClusterCredentials
para o nome do usuário do banco de dadosredshift_data_api_user
a qualquer banco de dados no cluster. Esse nome de usuário já deve ter sido criado no banco de dados. -
Se você usar credenciais temporárias para autenticar em um grupo de trabalho com a tecnologia sem servidor, confirme se a política permite o uso da ação
redshift-serverless:GetCredentials
para recuperar o grupo de trabalho marcado com a chaveRedshiftDataFullAccess
. O usuário do banco de dados é mapeado 1:1 para a identidade de origem do AWS Identity and Access Management (IAM). Por exemplo, o usuário usuário_amostra é mapeado para o usuário do banco de dadosIAM:sample_user
e o perfil do IAM perfil_amostra é mapeado paraIAMR:sample_role
. Para obter mais informações sobre as identidades do IAM, consulte Identidades do IAM (usuários, grupos de usuários e perfis) no Guia do usuário do IAM. -
A ação
redshift-data:GetStatementResult
do IAM permite acesso às operações de APIGetStatementResult
eGetStatementResultV2
.
Os links a seguir fornecem informações adicionais sobre o AWS Identity and Access Management no Manual do usuário do IAM.
-
Para obter informações sobre como criar funções de IAM, consulte Criar funções do IAM.
-
Para obter informações sobre como criar uma política do IAM, consulte Criar políticas do IAM.
-
Para obter informações sobre como adicionar uma política do IAM a um usuário, consulte Adicionando e removendo permissões de identidade do IAM.
Executar uma consulta em um cluster pertencente a outra conta
Para executar uma consulta em um cluster que pertence a outra conta, a conta proprietária deve fornecer uma função do IAM que a API de dados pode assumir na conta de chamada. Por exemplo, suponha que a Conta B possui um cluster que a Conta A precisa acessar. A conta B pode anexar a política AmazonRedshiftDataFullAccess
gerenciada pela AWS ao perfil do IAM da conta B. Em seguida, a Conta B confia na Conta A utilizando uma política fidedigna como a seguinte:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
accountID-of-account-A
:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }
Finalmente, a função do IAM da conta A precisa ser capaz de assumir a função do IAM da conta B.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::accountID-of-account-B:role/someRoleB" } }
Especificar um perfil do IAM que restrinja recursos aos grupos de trabalho do Redshift sem servidor e aos clusters do Amazon Redshift em uma Conta da AWS
É possível especificar ARNs de recursos em sua política baseada em identidade para controlar o acesso aos grupos de trabalho do Redshift sem servidor e clusters do Amazon Redshift em uma Conta da AWS. Este exemplo mostra como você pode criar uma política que permita acesso à API de dados somente ao grupo de trabalho e aos clusters na Conta da AWS especificada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-data:*", "Resource": [ "arn:
arn-partition
:redshift-serverless:*:Conta da AWS
:workgroup/*", "arn:arn-partition
:redshift:*:Conta da AWS
:cluster:*" ] } ] }
Configurar uma política do IAM que permita que somente o proprietário da instrução tenha acesso às informações da instrução SQL
Por padrão, a API de dados do Amazon Redshift trata o perfil do IAM usado ao chamar ExecuteStatement
e BatchExecuteStatement
como proprietário da instrução SQL. Qualquer pessoa autorizada a assumir o perfil pode acessar informações da instrução SQL, bem como os respectivos resultados. Para restringir o acesso às informações da instrução SQL a uma sessão do perfil do IAM com um proprietário específico, adicione uma condição redshift-data:statement-owner-iam-userid:
"${aws:userid}"
. A política do IAM a seguir restringe o acesso.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"redshift-data:CancelStatement",
"redshift-data:DescribeStatement",
"redshift-data:GetStatementResult",
"redshift-data:ListStatements"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"redshift-data:statement-owner-iam-userid": "${aws:userid}"
}
}
}
]
}
É possível usar a condição statement-owner-iam-userid
com CancelStatement
, DescribeStatement
, GetStatementResult
e ListStatements
. Para obter mais informações, consulte Actions defined by Amazon Redshift Data API.
Configurar uma política do IAM que permita que somente o proprietário da sessão tenha acesso aos resultados SQL
Por padrão, a API de dados do Amazon Redshift trata o perfil do IAM usado ao chamar ExecuteStatement
e BatchExecuteStatement
como o proprietário da instrução SQL que executa a instrução SQL. Qualquer pessoa autorizada a assumir o perfil pode enviar consultas à sessão do banco de dados. Para restringir o acesso a uma sessão do perfil do IAM com um proprietário específico, adicione a condição redshift-data:session-owner-iam-userid: "${aws:userid}"
. A política do IAM a seguir restringe o acesso.
A política do IAM a seguir permite que somente o proprietário da sessão obtenha os resultados da instrução. A condição session-owner-iam-userid
é usada para permitir o acesso a recursos somente ao userid
especificado.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:BatchExecuteStatement" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:session-owner-iam-userid": "${aws:userid}" } } } ] }
É possível usar a condição session-owner-iam-userid
com ExecuteStatement
e BatchExecuteStatement
. Para obter mais informações, consulte Actions defined by Amazon Redshift Data API.