Criar uma função do IAM como padrão para o Amazon Redshift
Quando você cria funções do IAM pelo console Redshift, o Amazon Redshift cria as funções em sua Conta da AWS de maneira programática e anexa automaticamente as políticas gerenciadas pela AWS para elas. Essa metodologia significa que você pode permanecer no console do Redshift e não precisa alternar para o console do IAM criar a função. Para um controle mais detalhado das permissões para uma função do IAM existente criada no console do Amazon Redshift, é possível anexar uma política gerenciada personalizada à função do IAM.
Perfis do IAM criados no console
Quando você usa o console do Amazon Redshift para criar funções do IAM, o Amazon Redshift rastreia todas as funções do IAM criadas pelo console. O Amazon Redshift pré-seleciona a função padrão mais recente do IAM para criar todos os novos clusters e restaurar clusters de snapshots.
É possível criar uma função do IAM pelo console que tenha uma política com permissões para executar comandos SQL. Esses comandos incluem: COPY, UNLOAD, CREATE EXTERNAL FUNCTION, CREATE EXTERNAL TABLE, CREATE EXTERNAL SCHEMA, CREATE MODEL ou CREATE LIBRARY. Se preferir, você pode obter um controle mais detalhado do acesso do usuário a seus recursos da AWS criando e anexando políticas personalizadas à função do IAM.
Ao criar uma função do IAM e defini-la como padrão para o cluster usando o console, não é necessário fornecer o nome do recurso da Amazon (ARN) da função do IAM para executar autenticação e autorização.
A função do IAM que você cria pelo console do cluster tem a política gerenciada AmazonRedshiftAllCommandsFullAccess
anexada automaticamente. Essa função do IAM permite que o Amazon Redshift copie, carregue, consulte e analise dados de recursos da AWS em sua conta do IAM. A política gerenciada fornece acesso às operações COPY, UNLOAD, CREATE EXTERNAL FUNCTION, CREATE EXTERNAL SCHEMA, CREATE MODEL e CREATE LIBRARY. A política também concede permissões para executar instruções SELECT para serviços relacionados da AWS, como Amazon S3, Amazon CloudWatch Logs, Amazon SageMaker e AWS Glue.
Os comandos CREATE EXTERNAL FUNCTION, CREATE EXTERNAL SCHEMA, CREATE MODEL e CREATE LIBRARY têm uma palavra-chave default
. Para essa palavra-chave para esses comandos, o Amazon Redshift usa a função do IAM definida como padrão e associada ao cluster quando o comando COPY é executado. Você pode executar o comando DEFAULT_IAM_ROLE para verificar a função padrão do IAM atual que está anexada ao cluster.
Para controlar os privilégios de acesso da função do IAM criada e definida como padrão para o cluster do Redshift, use o privilégio ASSUMEROLE. Esse controle de acesso se aplica a usuários e grupos de banco de dados quando eles executam comandos como os listados anteriormente. Depois de conceder o privilégio ASSUMEROLE a um usuário ou grupo para uma função do IAM, o usuário ou grupo poderá assumir essa função ao executar esses comandos. Com o privilégio ASSUMEROLE, você pode conceder acesso aos comandos apropriados conforme necessário.
Com o console do Amazon Redshift, é possível fazer o seguinte:
Permissões da política gerenciada AmazonRedshiftAllCommandsFullAccess
O exemplo a seguir exibe as permissões na política gerenciada AmazonRedshiftAllCommandsFullAccess
que permite determinadas ações para a função do IAM definida como padrão para o cluster. A função do IAM com políticas de permissão anexadas autoriza o que um usuário ou grupo pode ou não fazer. Com essas permissões, é possível executar o comando COPY do Amazon S3, executar UNLOAD e usar o comando CREATE MODEL.
{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::redshift-downloads", "arn:aws:s3:::redshift-downloads/*", "arn:aws:s3:::*redshift*", "arn:aws:s3:::*redshift*/*" ] }
O exemplo a seguir exibe as permissões na política gerenciada AmazonRedshiftAllCommandsFullAccess
que permite determinadas ações para a função do IAM definida como padrão para o cluster. A função do IAM com políticas de permissão anexadas autoriza o que um usuário ou grupo pode ou não fazer. Com as permissões a seguir, é possível executar o comando CREATE EXTERNAL FUNCTION.
{ "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:*redshift*" }
O exemplo a seguir exibe as permissões na política gerenciada AmazonRedshiftAllCommandsFullAccess
que permite determinadas ações para a função do IAM definida como padrão para o cluster. A função do IAM com políticas de permissão anexadas autoriza o que um usuário ou grupo pode ou não fazer. Com as seguintes permissões, é possível executar os comandos CREATE EXTERNAL SCHEMA e CREATE EXTERNAL TABLE necessários para o Amazon Redshift Spectrum.
{ "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:*:table/*redshift*/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*redshift*" ] }
O exemplo a seguir exibe as permissões na política gerenciada AmazonRedshiftAllCommandsFullAccess
que permite determinadas ações para a função do IAM definida como padrão para o cluster. A função do IAM com políticas de permissão anexadas autoriza o que um usuário ou grupo pode ou não fazer. Com as permissões a seguir, é possível executar o comando CREATE EXTERNAL SCHEMA usando consultas federadas.
{ "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:*Redshift*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/Redshift": "true" } } },
Gerenciar funções do IAM criadas para um cluster usando o console
Para criar, modificar e remover funções do IAM criadas a partir do console do Amazon Redshift, use a seção Clusters no console.
Criar uma função do IAM como padrão
No console, é possível criar uma função do IAM pelo console do cluster que tenha a política gerenciada AmazonRedshiftAllCommandsFullAccess
anexada automaticamente. A nova função do IAM que você criar permitirá que o Amazon Redshift copie, carregue, consulte e analise dados de recursos da Amazon em sua conta do IAM.
Pode haver somente um conjunto de funções do IAM definido como padrão para o cluster. Se você criar outra função do IAM como padrão do cluster quando uma função do IAM existente estiver atualmente atribuída como padrão, a nova função do IAM substituirá a outra como padrão.
Para criar um novo cluster e um conjunto de funções do IAM como padrão para o novo cluster
-
Faça login no AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. -
No menu de navegação, escolha Clusters. Os clusters de sua conta na Região da AWS atual são listados. Um subconjunto de propriedades de cada cluster é exibido nas colunas na lista.
-
Escolha Create cluster (Criar cluster) para criar um cluster.
-
Siga as instruções na página do console para inserir as propriedades de Cluster configuration (Configuração do cluster). Para obter mais informações sobre essa etapa, consulte Criar um cluster.
-
(Opcional) Escolha Load sample data (Carregar dados de exemplo) para carregar o conjunto de dados de exemplo no cluster do Amazon Redshift para começar a usar o editor de consultas para consultar dados.
Se você estiver atrás do firewall, a porta do banco de dados deverá ser uma porta aberta que aceite conexões de entrada.
-
Siga as instruções na página do console para inserir as propriedades de Database configurations (Configurações de banco de dados).
-
Em Cluster permissions (Permissões do cluster), em Manage IAM roles (Gerenciar funções do IAM), escolha Create IAM role (Criar função do IAM).
-
Especifique um bucket do Amazon S3 para que a função do IAM seja acessada escolhendo um destes métodos:
-
Selecione No additional Amazon S3 bucket (Nenhum bucket adicional do Amazon S3) para criar a função do IAM sem especificar buckets do Amazon S3.
-
Escolha Any Amazon S3 bucket (Qualquer bucket do Amazon S3) para permitir que os usuários que tenham acesso ao cluster do Amazon Redshift também acessem qualquer bucket do Amazon S3 e o conteúdo dele em sua Conta da AWS.
-
Escolha Specific Amazon S3 buckets (Buckets específicos do Amazon S3) para especificar um ou mais buckets do Amazon S3 que a função do IAM criada tenha função para acessar. Em seguida, escolha um ou mais buckets do Amazon S3 na tabela.
-
-
Escolha Create IAM role as default (Criar função do IAM como padrão). O Amazon Redshift cria e define automaticamente a função do IAM como padrão para o cluster.
-
Para criar o cluster, escolha Create cluster (Criar cluster). Podem ser necessários alguns minutos para preparar o cluster para ser usado.
Remover funções do IAM do cluster
É possível remover uma ou mais funções do IAM de seu cluster.
Para remover funções do IAM do cluster
-
Faça login no AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. -
No menu de navegação, escolha Clusters. Os clusters de sua conta na Região da AWS atual são listados. Um subconjunto de propriedades de cada cluster é exibido nas colunas na lista.
-
Escolha o cluster do qual você deseja remover a função do IAM.
-
Em Cluster permissions (Permissões do cluster), escolha uma ou mais funções do IAM que você deseja remover do cluster.
-
Em Manage IAM roles (Gerenciar funções do IAM), escolha Remove IAM roles (Remover funções do IAM).
Associar funções do IAM ao cluster
É possível associar uma ou mais funções do IAM ao cluster.
Para associar funções do IAM ao cluster
-
Faça login no AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. -
No menu de navegação, escolha Clusters. Os clusters de sua conta na Região da AWS atual são listados. Um subconjunto de propriedades de cada cluster é exibido nas colunas na lista.
-
Escolha o cluster ao qual você deseja associar funções do IAM.
-
Em Cluster permissions (Permissões do cluster), escolha uma ou mais funções do IAM que você deseja associar ao cluster.
-
Em Manage IAM roles (Gerenciar funções do IAM), escolha Associate IAM roles (Associar funções do IAM).
-
Escolha uma ou mais funções do IAM para associar ao cluster.
-
Em seguida, escolha Associate IAM roles (Associar funções do IAM).
Definir uma função do IAM como padrão
É possível definir uma função do IAM como padrão para o cluster.
Para tornar uma função do IAM padrão para o cluster
-
Faça login no AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. -
No menu de navegação, escolha Clusters. Os clusters de sua conta na Região da AWS atual são listados. Um subconjunto de propriedades de cada cluster é exibido nas colunas na lista.
-
Escolha o cluster para o qual deseja definir uma função padrão do IAM.
-
Em Cluster permissions (Permissões do cluster, de Associated IAM roles (Funções do IAM associadas), escolha uma função do IAM que você deseja tornar padrão para o cluster.
-
Em Set default (Configurar padrão), escolha Make default (Tornar padrão).
-
Quando solicitado, escolha Set default (Configurar padrão) para confirmar como padrão a função do IAM especificada.
Fazer com que uma função do IAM não seja padrão para o cluster
É possível fazer com que uma função do IAM não seja padrão para o cluster.
Para desmarcar uma função do IAM como padrão para o cluster
-
Faça login no AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. -
No menu de navegação, escolha Clusters. Os clusters de sua conta na Região da AWS atual são listados. Um subconjunto de propriedades de cada cluster é exibido nas colunas na lista.
-
Escolha o cluster ao qual você deseja associar funções do IAM.
-
Em Cluster permissions (Permissões do cluster, de Associated IAM roles (Funções do IAM associadas), escolha a função do IAM padrão.
-
Em Set default (Configurar padrão), escolha Clear default (Desmarcar padrão).
-
Quando solicitado, escolha Clear default (Desmarcar padrão) para desmarcar a função do IAM especificada como padrão.
Gerenciar funções do IAM criadas em um cluster usando a AWS CLI
É possível gerenciar as funções do IAM criadas em um cluster usando a AWS CLI.
Para criar um cluster do Amazon Redshift com uma função do IAM definida como padrão
Para criar um cluster do Amazon Redshift com uma função do IAM definida como padrão para o cluster, use o comando aws redshift create-cluster
da AWS CLI.
O seguinte comando da AWS CLI cria um cluster do Amazon Redshift e a função do IAM chamada myrole1. O comando AWS CLI também define myrole1 como o padrão para o cluster.
aws redshift create-cluster \ --node-type dc2.large \ --number-of-nodes 2 \ --master-username adminuser \ --master-user-password TopSecret1 \ --cluster-identifier mycluster \ --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ] ... } }
Para adicionar uma ou mais funções do IAM a um cluster do Amazon Redshift
Para adicionar uma ou mais funções do IAM associadas ao cluster, use o comando aws
redshift modify-cluster-iam-roles
da AWS CLI.
O seguinte comando AWS CLI adiciona myrole3
e myrole4
ao cluster.
aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "adding" } ], ... } }
Para remover uma ou mais funções do IAM de um cluster do Amazon Redshift
Para remover uma ou mais funções do IAM associadas ao cluster, use o comando aws
redshift modify-cluster-iam-roles
da AWS CLI.
O comando da AWS CLI a seguir remove myrole3
e myrole4
do cluster.
aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --remove-iam-roles 'arn:aws:iam::012345678910:role/myrole3' 'arn:aws:iam::012345678910:role/myrole4'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "removing" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole4", "ApplyStatus": "removing" } ], ... } }
Para definir uma função do IAM associada como padrão para o cluster
Para definir uma função do IAM associada como padrão para o cluster, use o comando aws redshift modify-cluster-iam-roles
da AWS CLI.
O comando da AWS CLI a seguir também define myrole2
como o padrão para o cluster.
aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole2'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" } ], ... } }
Para definir uma função do IAM não associada como padrão para o cluster
Para definir uma função do IAM não associada como padrão para o cluster, use o comando aws redshift modify-cluster-iam-roles
da AWS CLI.
O seguinte comando da AWS CLI adiciona myrole2
ao cluster do Amazon Redshift e o define como padrão para o cluster.
aws redshift modify-cluster-iam-roles \ --cluster-identifier mycluster \ --add-iam-roles 'arn:aws:iam::012345678910:role/myrole3' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole3'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole3", "ApplyStatus": "adding" } ], ... } }
Para restaurar um cluster de um snapshot e definir uma função do IAM como padrão para ele
Ao restaurar o cluster de um snapshot, é possível associar uma função do IAM existente ou criar uma nova e defini-la como padrão para o cluster.
Para restaurar um cluster do Amazon Redshift de um snapshot com uma função do IAM definida como padrão para o cluster, use o comando aws redshift restore-from-cluster-snapshot
da AWS CLI.
O seguinte comando da AWS CLI restaura o cluster de um snapshot e define myrole2
como padrão para o cluster.
aws redshift restore-from-cluster-snapshot \ --cluster-identifier mycluster-clone \ --snapshot-identifier my-snapshot-id --iam-roles 'arn:aws:iam::012345678910:role/myrole1' 'arn:aws:iam::012345678910:role/myrole2' \ --default-iam-role-arn 'arn:aws:iam::012345678910:role/myrole1'
O snippet a seguir é um exemplo da resposta.
{ "Cluster": { "ClusterIdentifier": "mycluster-clone", "NodeType": "dc2.large", "MasterUsername": "adminuser", "DefaultIamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "IamRoles": [ { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole1", "ApplyStatus": "adding" }, { "IamRoleArn": "arn:aws:iam::012345678910:role/myrole2", "ApplyStatus": "adding" } ], ... } }