Athrun Data Intelligence


Amazon Redshift es un poderoso almacén de datos basado en la estrato que las organizaciones pueden usar para analizar datos estructurados y semiestructurados a través de consultas SQL avanzadas. Como servicio totalmente administrado, proporciona un suspensión rendimiento y escalabilidad al tiempo que permite el llegada seguro a los datos almacenados en el almacén de datos. Las organizaciones de todo el mundo confían en Amazon Redshift para manejar conjuntos de datos masivos, poner al día sus capacidades de investigación y ofrecer una valiosa inteligencia empresarial a sus partes interesadas.

Centro de identidad de AWS IAM sirve como la plataforma preferida para controlar el llegada a la fuerza profesional a las herramientas de AWS, incluidas Desarrollador de Amazon Q. Permite una conexión única con su proveedor de identidad existente (IDP), creando una traza unificada de los usuarios en las aplicaciones AWS y aplicando Propagación de identidad de confianza para una experiencia suave y consistente.

Puede entrar a datos en Amazon RedShift utilizando usuarios locales o usuarios externos. Un afortunado almacén en Amazon Redshift es una cuenta de afortunado de la pulvínulo de datos que se crea y se administra directamente adentro del clúster RedShift. Amazon Redshift todavía Se integra con IAM Identity Centery apoya Propagación de identidad de confianzapara que puedas usar IDPS de terceros como Microsoft Entra ID (Azure AD), Okta, Ping, OneLogin o Usar IAM Identity Center como fuente de identidad. La integración del centro de identidad IAM con Amazon RedShift admite la autenticación centralizada y las capacidades SSO, simplificando la diligencia de llegada en entornos de cuenta múltiple. A medida que las organizaciones crecen en escalera, se recomienda utilizar usuarios externos para la integración de servicios cruzados y la diligencia de llegada centralizado.

En esta publicación, lo guiamos a través del proceso de portar sin problemas su diligencia almacén de usuarios de desplazamiento al rojo a los usuarios y grupos del Centro de identidad de IAM utilizando el Redshiftidcmigration utilidad.

Descripción genérico de la alternativa

El próximo diagrama ilustra la cimentación de la alternativa.

El Redshiftidcmigration La utilidad acelera la migración de sus usuarios, grupos y roles de desplazamiento al rojo almacén a su instancia de IAM Identity Center realizando las siguientes actividades:

  • Cree usuarios en IAM Identity Center para cada afortunado almacén en una instancia de desplazamiento rojo cedido.
  • Cree grupos en el Centro de identidad IAM para cada categoría o papel en una instancia de desplazamiento al rojo cedido.
  • Asigne usuarios a grupos en IAM Identity Center de acuerdo con las asignaciones existentes en la instancia de desplazamiento rojo.
  • Cree roles del centro de identidad IAM en la instancia de desplazamiento rojo que coincida con los grupos creados en IAM Identity Center.
  • Otorgan permisos a los roles del Centro de identidad IAM en la instancia de desplazamiento al rojo basados ​​en los permisos actuales otorgados a grupos y roles locales.

Requisitos previos

Antaño de ejecutar la utilidad, complete los siguientes requisitos previos:

  1. Habilitar el centro de identidad de IAM en tu cuenta.
  2. Sigue los pasos de la publicación Integrate Identity Provider (IDP) con Amazon Redshift Consulty Editor V2 y SQL Client utilizando AWS IAM Identity Center para inicio de sesión único sin interrupciones (Específicamente, siga los pasos 1–8, saltando los pasos 4 y 6).
  3. Configurar las asignaciones de aplicaciones de IAM Identity Center:
    1. En la consola de IAM Identity Center, elija Asignaciones de aplicaciones y Aplicaciones.
    2. Seleccione su aplicación y en el Comportamiento menú desplegable, elija Editar detalles.
    3. Para Asignaciones de usuarios y gruposdesignar No requiera tareas. Esta configuración permite probar la conectividad de desplazamiento rojo de Amazon sin configurar permisos de llegada a datos específicos.
  4. Configurar la autenticación del centro de identidad de IAM con llegada oficial desde cualquiera Estrato de enumeración elástica de Amazon (Amazon EC2) o AWS Cloudshell.

La utilidad se ejecutará desde una instancia EC2 o CloudShell. Si está utilizando una instancia de EC2, se adjunta un rol de IAM a la instancia. Asegúrese de que el rol de IAM utilizado durante la ejecución tenga los siguientes permisos (si no, cree una nueva política con esos permisos y adjunte al rol de IAM):

  • Permisos de desplazamiento rojo de Amazon (para sin servidor):
{
    "Version": "2012-10-17",
    "Statement": (
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": (
                "redshift-serverless:GetCredentials",
                "redshift-serverless:GetNamespace",
                "redshift-serverless:GetWorkgroup"
            ),
            "Resource": (
                "arn:aws:redshift-serverless:${region}:${account-id}:namespace/${namespace-id}",
                "arn:aws:redshift-serverless:${region}:${account-id}:workgroup/${workgroup-id}"
            )
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": (
                "redshift-serverless:ListNamespaces",
                "redshift-serverless:ListWorkgroups"
            ),
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": (
                "redshift:CreateClusterUser",
                "redshift:JoinGroup",
                "redshift:GetClusterCredentials",
                "redshift:ExecuteQuery",
                "redshift:FetchResults",
                "redshift:DescribeClusters",
                "redshift:DescribeTable"
            ),
            "Resource": (
                "arn:aws:redshift:${region}:${account-id}:cluster:redshift-serverless-${workgroup-name}",
                "arn:aws:redshift:${region}:${account-id}:dbgroup:redshift-serverless-${workgroup-name}/${dbgroup}",
                "arn:aws:redshift:${region}:${account-id}:dbname:redshift-serverless-${workgroup-name}/${dbname}",
                "arn:aws:redshift:${region}:${account-id}:dbuser:redshift-serverless-${workgroup-name}/${dbuser}"
            )
        }
    )
}

  • Permisos de desplazamiento al rojo de Amazon (para aprovisionados):
{
    "Version": "2012-10-17",
    "Statement": (
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentials",
            "Resource": (
                "arn:aws:redshift: ${region}:${account-id}:dbname:${cluster_name}/${dbname}",
                "arn:aws:redshift: ${region}: ${account-id}:dbuser:${cluster-name}/${dbuser}"
            )
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": (
                "redshift:DescribeClusters",
                "redshift:ExecuteQuery",
                "redshift:FetchResults",
                "redshift:DescribeTable"
            ),
            "Resource": "*"
        }
    )
}

{
    "Version": "2012-10-17",
    "Statement": (
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": (
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetEncryptionConfiguration",
                "s3:ListBucket",
                "s3:DeleteObject"
            ),
            "Resource": (
                "arn:aws:s3:::${s3_bucket_name}/*",
                "arn:aws:s3:::${s3_bucket_name}"
            )
        }
    )
}

  • Permisos de la tienda de identidad:
{
    "Version": "2012-10-17",
    "Statement": (
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "identitystore:*",
            "Resource": (
                "arn:aws:identitystore:::group/*",
                "arn:aws:identitystore:::user/*",
                "arn:aws:identitystore::${account_id}:identitystore/${identity_store_id}",
                "arn:aws:identitystore:::membership/*"
            )
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "identitystore:*",
            "Resource": (
                "arn:aws:identitystore:::membership/*",
                "arn:aws:identitystore:::user/*",
                "arn:aws:identitystore:::group/*"
            )
        }
    )
}

Artefactos

Descargue los siguientes artefactos de utilidad del Repositorio de Github:

  • idc_redshift_unload_indatabase_groups_roles_users.py – Un script de Python para descargar usuarios, grupos, roles y sus asociaciones.
  • Redshift_unload.ini – El archivo de configuración utilizado en el script susodicho para ojear los detalles del almacén de datos del desplazamiento rojo y las ubicaciones de Amazon S3 para descargar los archivos.
  • idc_add_users_groups_roles_psets.py – Un script de Python para crear usuarios y grupos en IAM Identity Center, y luego asociar a los usuarios a grupos en IAM Identity Center.
  • idc_config.ini – El archivo de configuración utilizado en el script susodicho para ojear los detalles del centro de identidad de IAM.
  • VW_LOCAL_UGR_TO_IDC_URGR_PRIV.SQL – Un script que genera declaraciones SQL que realizan dos tareas en Amazon Redshift:
    • Cree roles que coincidan exactamente con los nombres de sus grupos de IAM Identity Center, agregando un prefijo especificado.
    • Otorgue los permisos apropiados a estos roles de desplazamiento al rojo recién creados.

Tablas de prueba

Este caso de prueba está diseñado para ofrecer experiencia actos y familiarizarlo con la funcionalidad de la utilidad. El proscenio está estructurado en torno a un sistema de roles anidados jerárquicos, comenzando con permisos a nivel de objeto asignados a roles técnicos. Estos roles técnicos se asignan a roles comerciales. Finalmente, se otorgan roles comerciales a usuarios individuales. Para mejorar el entorno de prueba, el proscenio todavía incorpora un categoría de usuarios. El próximo diagrama ilustra esta cargo.

Crear conjuntos de datos

Configurar dos esquemas separados (tickit y tpcds) en una pulvínulo de datos de desplazamiento rojo utilizando el Crear esquema dominio. Luego, cree y llene algunas tablas en cada esquema utilizando el tickit y tpcds conjuntos de datos.

Especifique el nombre de fortuna de Amazon (ARN) apropiado de rol de IAM en los comandos de copia si es necesario.

Crear usuarios

Cree usuarios con el próximo código:

-- ETL users
create user etl_user_1 password 'EtlUser1!';
create user etl_user_2 password 'EtlUser2!';
create user etl_user_3 password 'EtlUser3!';

-- Reporting users
create user reporting_user_1 password 'ReportingUser1!';
create user reporting_user_2 password 'ReportingUser2!';
create user reporting_user_3 password 'ReportingUser3!';

-- Adhoc users
create user adhoc_user_1 password 'AdhocUser1!';
create user adhoc_user_2 password 'AdhocUser2!';

-- Analyst users
create user analyst_user_1 password 'AnalystUser1!';

Crear roles comerciales

Cree usuarios comerciales con el próximo código:

-- ETL business roles
create role role_bn_etl_tickit;
create role role_bn_etl_tpcds;

-- Reporting business roles
create role role_bn_reporting_tickit;
create role role_bn_reporting_tpcds;

-- Analyst business roles
create role role_bn_analyst_tickit;

Crear roles técnicos

Cree roles técnicos con el próximo código:

-- Technical roles for tickit schema
create role role_tn_sel_tickit;
create role role_tn_dml_tickit;
create role role_tn_cte_tickit;

-- Technical roles for tpcds schema
create role role_tn_sel_tpcds;
create role role_tn_dml_tpcds;
create role role_tn_cte_tpcds;

Crear grupos

Cree grupos con el próximo código:

-- Adhoc users group
create group group_adhoc;

Derechos de subvención a roles técnicos

Para otorgar derechos a los roles técnicos, use el próximo código:

-- role_tn_sel_tickit
grant usage on schema tickit to role role_tn_sel_tickit;
grant select on all tables in schema tickit to role role_tn_sel_tickit;

-- role_tn_dml_tickit
grant usage on schema tickit to role role_tn_dml_tickit;
grant insert, update, delete on all tables in schema tickit to role role_tn_dml_tickit;

-- role_tn_cte_tickit
grant usage, create on schema tickit to role role_tn_cte_tickit;
grant drop on all tables in schema tickit to role role_tn_cte_tickit;

-- role_tn_sel_tpcds
grant usage on schema tpcds to role role_tn_sel_tpcds;
grant select on all tables in schema tpcds to role role_tn_sel_tpcds;

-- role_tn_dml_tpcds
grant usage on schema tpcds to role role_tn_dml_tpcds;
grant insert, update, delete on all tables in schema tpcds to role role_tn_dml_tpcds;

-- role_tn_cte_tpcds
grant usage, create on schema tpcds to role role_tn_cte_tpcds;
grant drop on all tables in schema tpcds to role role_tn_cte_tpcds;

Otorgar roles técnicos a roles comerciales

Para otorgar los roles técnicos a los roles comerciales, use el próximo código:

-- Business role role_bn_etl_tickit
grant role role_tn_sel_tickit to role role_bn_etl_tickit;
grant role role_tn_dml_tickit to role role_bn_etl_tickit;
grant role role_tn_cte_tickit to role role_bn_etl_tickit;

-- Business role role_bn_etl_tpcds
grant role role_tn_sel_tpcds to role role_bn_etl_tpcds;
grant role role_tn_dml_tpcds to role role_bn_etl_tpcds;
grant role role_tn_cte_tpcds to role role_bn_etl_tpcds;

-- Business role role_bn_reporting_tickit
grant role role_tn_sel_tickit to role role_bn_reporting_tickit;

-- Business role role_bn_reporting_tpcds
grant role role_tn_sel_tpcds to role role_bn_reporting_tpcds;

-- Business role role_bn_analyst_tickit
grant role role_tn_sel_tickit to role role_bn_analyst_tickit;

Otorgar roles comerciales a los usuarios

Para otorgar los roles comerciales a los usuarios, use el próximo código:

-- etl_user_1
grant role role_bn_etl_tickit to etl_user_1;

-- etl_user_2
grant role role_bn_etl_tpcds to etl_user_2;

-- etl_user_3
grant role role_bn_etl_tickit to etl_user_3;
grant role role_bn_etl_tpcds to etl_user_3;

-- reporting_user_1
grant role role_bn_reporting_tickit to reporting_user_1;

-- reporting_user_2
grant role role_bn_reporting_tpcds to reporting_user_2;

-- reporting_user_3
grant role role_bn_reporting_tickit to reporting_user_3;
grant role role_bn_reporting_tpcds to reporting_user_3;

-- analyst_user_1
grant role role_bn_analyst_tickit to analyst_user_1;

Derechos de subvención a los grupos

Para otorgar derechos a los grupos, use el próximo código:

-- Group group_adhoc
grant usage on schema tickit to group group_adhoc;
grant select on all tables in schema tickit to group group_adhoc;

grant usage on schema tpcds to group group_adhoc;
grant select on all tables in schema tpcds to group group_adhoc;

Añadir usuarios a los grupos

Para asociar usuarios a los grupos, use el próximo código:

alter group group_adhoc add user adhoc_user_1;
alter group group_adhoc add user adhoc_user_2;

Implementar la alternativa

Complete los siguientes pasos para implementar la alternativa:

  1. Refrescar los detalles del punto final sin servidor de puesta al día y la ubicación de Amazon S3 en redshift_unload.ini:
    • cluster_type = provisioned o serverless
    • cluster_id = ${cluster_identifier} (requerido si cluster_type es provisioned)
    • db_user = ${database_user}
    • db_name = ${database_name}
    • hospedador = ${host_url} (requerido si cluster_type es provisioned)
    • puerto = ${port_number}
    • trabajogroup_name = ${workgroup_name} (requerido si cluster_type es serverless)
    • región = ${region}
    • s3_bucket = ${S3_bucket_name}
    • roles = roles.csv
    • usuarios = users.csv
    • Memberships role = role_memberships.csv
  2. Refrescar los detalles del Centro de identidad de IAM en idc_config.ini:
    • región = ${region}
    • cuenta_id = ${account_id}
    • identity_store_id = ${identity_store_id} (Habitable en la consola IAM Identity Center Ajustes página)
    • instancia_arn = ${iam_identity_center_instance_arn} (Habitable en la consola IAM Identity Center Ajustes página)
    • permiso_set_arn = ${permission_set_arn}
    • asigne_permission_set = True o False (True si permission_set_arn está definido)
    • s3_bucket = ${S3_bucket_name}
    • Users_File = users.csv
    • roles_file = roles.csv
    • role_memberships_file = role_memberships.csv
  3. Cree un directorio en CloudShell o en su propia instancia de EC2 con conectividad a Amazon Redshift.
  4. Copie los dos archivos .ini y descargue los scripts de Python a ese directorio.
  5. Pasar idc_redshift_unload_indatabase_groups_roles_users.py ya sea desde CloudShell o de su instancia de EC2:python idc_redshift_unload_indatabase_groups_roles_users.py
  6. Pasar idc_add_users_groups_roles_psets.py ya sea desde CloudShell o de su instancia de EC2:python idc_add_users_groups_roles_psets.py
  7. Conecte su clúster RedShift utilizando el Editor de consultas de Amazon RedShift V2 o el cliente SQL preferido, utilizando credenciales de Superuser.
  8. Copie el SQL en el vw_local_ugr_to_idc_urgr_priv.sql archivo y ejecutarlo en el editor de consultas para crear el vw_local_ugr_to_idc_urgr_priv traza.
  9. Ejecute siguiendo el comando SQL para ocasionar las declaraciones SQL para crear roles y permisos:
    select existing_grants,idc_based_grants from vw_local_ugr_to_idc_urgr_priv;

    Por ejemplo, considere las siguientes subvenciones existentes:

    CREATE GROUP "group_adhoc";
    CREATE ROLE "role_bn_etl_tickit";
    GRANT USAGE ON SCHEMA tpcds TO role "role_tn_sel_tpcds" ;

    Estas subvenciones se convierten en el próximo código:

    CREATE role "AWSIDC:group_adhoc";
    CREATE role "AWSIDC:role_bn_etl_tickit";
    GRANT USAGE ON SCHEMA tpcds TO role "AWSIDC:role_tn_sel_tpcds";

  10. Revise las declaraciones en el idc_based_grants columna.
    Puede que esta no sea una índice completa de permisos, así que revíselos cuidadosamente.
  11. Si todo es correcto, ejecute las declaraciones del cliente SQL.

Cuando haya completado el proceso, debe tener la próximo configuración:

  • Iam Identity Center ahora contiene usuarios recién creados de Amazon Redshift
  • Los grupos y roles locales de desplazamiento rojo se crean como grupos en IAM Identity Center
  • Se establecen nuevos roles en Amazon Redshift, correspondientes a los grupos creados en IAM Identity Center
  • A los roles de desplazamiento al rojo recién creados se les asignan permisos apropiados

Si se encuentra con un problema mientras se conecta a Amazon Redshift con el editor de consultas utilizando IAM Identity Center, consulte Posibilidad de conexiones de problemas de Amazon RedShift Consult Editor V2.

Consideraciones

Considere lo próximo al usar esta alternativa:

  • Al momento de escribir, creando permisos en Formación del laguna AWS no está en significación.
  • La configuración de IAM Identity Center y IDP de integración están fuera de significación para esta utilidad. Sin bloqueo, puede usar la traza vw_local_ugr_to_idc_urgr_priv.sqlPara crear roles y otorgar permisos a los usuarios y grupos de IDP pasados ​​por IAM Identity Center.
  • Si tiene permisos dados directamente a las ID de afortunado locales (no utilizando grupos o roles), debe cambiarlo a un enfoque de permiso basado en roles para la integración del centro de identidad IAM. Cree roles y proporcione permisos utilizando roles en lado de dar permisos directamente a los usuarios.

Higienizar

Si ha completado el proscenio de prueba, limpie su entorno:

  1. Elimine los nuevos roles de desplazamiento al rojo que fueron creados por la utilidad, correspondientes a los grupos establecidos en IAM Identity Center.
  2. Elimine los usuarios y grupos creados por la utilidad adentro de IAM Identity Center.
  3. Elimine los usuarios, grupos y roles especificados en el proscenio de prueba.
  4. Dejar caer tickit y tpcds esquemas.

Puedes usar el FUERZA Parámetro Al soltar los roles para eliminar las tareas asociadas.

Conclusión

En esta publicación, mostramos cómo portar su diligencia de usuarios locales de desplazamiento rojo al Centro de identidad IAM. Esta transición ofrece varias ventajas secreto para su estructura, como la diligencia de llegada simplificado a través de la dependencia centralizada de usuarios y grupos, una experiencia de afortunado simplificada en los servicios de AWS y una reducción de gastos administrativos reducidos. Puede implementar este proceso de migración paso a paso, para que pueda probar y validar cada paso antiguamente de hacer la transición completamente de su entorno de producción.

A medida que las organizaciones continúan escalando su infraestructura de AWS, el uso del Centro de identidad de IAM se vuelve cada vez más valioso para persistir la diligencia de llegada segura y valioso, incluida Estudio unificado de Amazon Sagemaker para una experiencia integrada para todos sus datos y IA.


Sobre los autores

Ziad Wali

Ziad Wali

Ziad es un arquitecto de soluciones especialistas en investigación en AWS. Tiene más de 10 primaveras de experiencia en bases de datos y almacenamiento de datos, donde disfruta construir soluciones confiables, escalables y eficientes. Fuera del trabajo, disfruta de los deportes y pasando tiempo en la naturaleza.

Satesh Sonti

Satesh Sonti

Paila es un arquitecto de soluciones especialistas en investigación de Sr. con sede en Atlanta, especializada en la construcción de plataformas de datos empresariales, almacenamiento de datos y soluciones de investigación. Tiene más de 19 primaveras de experiencia en la creación de activos de datos y liderando programas de plataformas de datos complejos para clientes bancarios y de seguros en todo el mundo.

Maneesh Sharma

Maneesh Sharma

Manejar Es un ingeniero de bases de datos senior en AWS con más de una división de experiencia en el diseño e implementación de soluciones de investigación de datos y investigación de datos a gran escalera. Colabora con varios socios y clientes de Amazon RedShift para impulsar una mejor integración.

Sumanth Punyamurthula

Sumanth Punyamurthula

Sumantio es un arquitecto senior de datos y investigación en AWS con más de 20 primaveras de experiencia en el liderazgo de grandes iniciativas analíticas, incluidos investigación, almacén de datos, lagos de datos, gobernanza de datos, seguridad e infraestructura en la estrato en las industrias de viajes, hospitalidad, financieras y de atención médica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *