Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

469
Views
AWS Redshift: Masteruser no autorizado para asumir el rol

Creé una pila de formación en la nube con un clúster de corrimiento al rojo y un usuario maestro: testuser

 "RedshiftCluster" : { "IamRoles" : [ { "Fn::GetAtt": [ "IAMInstanceRole", "Arn" ] } ] ... other configurations

Utiliza el siguiente rol de IAM (IAMInstanceRole) que se encuentra en estado sincronizado y el clúster de redshift está en funcionamiento:

 "IAMInstanceRole": { "Properties": { "RoleName": "test-iam-role", "AssumeRolePolicyDocument": { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com", "redshift.amazonaws.com", "s3.amazonaws.com" ] } } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } } ] }

Estoy tratando de cargar el archivo csv de s3 a redshift usando el comando de copia e iam_role como credencial. El iam_role tiene el arn de IAMInstanceRole (declarado arriba). Cada vez que ejecuto el siguiente comando:

 copy test_table from 's3://test-bucket/test.csv' CREDENTIALS 'aws_iam_role=arn:aws:iam::<account-id>:role/test-iam-role' MAXERROR 100000 removequotes TRIMBLANKS emptyasnull blanksasnull delimiter '|';

me sale el error:

 ERROR: User arn:aws:redshift:us-west-2:189675173661:dbuser:automated-data-sanity-redshiftcluster-fbp9fgls6lri/sanityuser is not authorized to assume IAM Role arn:aws:iam::189675173661:role/sanity-test-iam-instance-role DETAIL: ----------------------------------------------- error: User arn:aws:redshift:us-west-2:<account-id>:dbuser:test-redshiftcluster-fbp9fgls6lri/testuser is not authorized to assume IAM Role arn:aws:iam::<account-id>:role/test-iam-role code: 8001 context: IAM Role=arn:aws:iam::<account-id>:role/test-iam-role query: 1139 location: xen_aws_credentials_mgr.cpp:236 process: padbmaster [pid=29280] -----------------------------------------------

Por favor sugiera alguna resolución.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Me encontré con el mismo problema, pero después de una buena hora de resolución de problemas, me di cuenta de que no había podido agregar el rol de Redshift al clúster mientras lo creaba. Si selecciona el clúster de Redshift, elija el menú desplegable en 'Acciones' y seleccione 'Administrar roles de IAM' desde allí, podrá adjuntar el rol de Redshift que haya creado para este clúster.

Eso resolvió el problema para mí, de todos modos. Espero que esto ayude.

over 4 years ago · Santiago Trujillo Report

0

¡Resolví este problema! De forma predeterminada, los roles de IAM que están disponibles para un clúster de Amazon Redshift están disponibles para todos los usuarios de ese clúster. Puede optar por restringir las funciones de IAM a usuarios específicos de la base de datos de Amazon Redshift en clústeres o regiones específicos.

Para permitir que solo usuarios específicos de la base de datos utilicen un rol de IAM, realice los siguientes pasos.

Para identificar usuarios de bases de datos específicos con acceso a un rol de IAM

  1. Identifique el Nombre de recurso de Amazon (ARN) para los usuarios de la base de datos en su clúster de Amazon Redshift. El ARN para un usuario de la base de datos tiene el formato: arn:aws:redshift:region:account-id:dbuser:cluster-name/user-name.

  2. Abra la consola de IAM en url="https://console.aws.amazon.com/.

  3. En el panel de navegación, elija Roles.

  4. Elija el rol de IAM que desea restringir a usuarios específicos de la base de datos de Amazon Redshift.

  5. Elija la pestaña Relaciones de confianza y luego elija Editar relación de confianza. Un nuevo rol de IAM que permite a Amazon Redshift acceder a otros servicios de AWS en su nombre tiene una relación de confianza de la siguiente manera:

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  1. Agregue una condición a la sección de acción sts:AssumeRole de la relación de confianza que limite el campo sts:ExternalId a los valores que especifique. Incluya un ARN para cada usuario de la base de datos al que desee otorgar acceso al rol.

Por ejemplo, la siguiente relación de confianza especifica que solo los usuarios de la base de datos user1 y user2 en el clúster my-cluster en la región us-west-2 tienen permiso para usar este rol de IAM.

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user1", "arn:aws:redshift:us-west-2:123456789012:dbuser:my-cluster/user2" ] } } }] }

7.Elija Actualizar política de confianza.

over 4 years ago · Santiago Trujillo Report

0

Aquí hay una plantilla que funciona bien:

 { "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "RedshiftRole": { "Type": "AWS::IAM::Role", "Properties": { "RoleName": "Redshift-Role", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } ] } } ] } }, "RedshiftSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupName": "Redshift Security Group", "GroupDescription": "Enable access to redshift", "VpcId": "vpc-11223344", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 5439, "ToPort": 5439, "CidrIp": "0.0.0.0/0" } ], "Tags": [ { "Key": "Name", "Value": "Redshift Security Group" } ] } }, "RedshiftCluster": { "Type": "AWS::Redshift::Cluster", "Properties": { "ClusterType": "single-node", "NodeType": "dc2.large", "MasterUsername": "master", "MasterUserPassword": "YourPassword", "IamRoles": [ { "Fn::GetAtt": [ "RedshiftRole", "Arn" ] } ], "VpcSecurityGroupIds": [ { "Ref": "RedshiftSG" } ], "PubliclyAccessible": true, "Port": 5439, "DBName": "foo" } } } }

Asegúrese de insertar su propio VpcId en el grupo de seguridad.

El Rol puede ser asumido por Redshift y otorga acceso a s3:* (que debe reducir su alcance).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!