Administración del control de acceso en el catálogo de permisos federados de Amazon Redshift - Amazon Redshift

Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la publicación del blog.

Administración del control de acceso en el catálogo de permisos federados de Amazon Redshift

Con los permisos federados de Amazon Redshift, los usuarios pueden definir controles de acceso básicos y detallados desde cualquier almacén de Redshift de la Cuenta de AWS. Los permisos básicos administran el acceso a las tablas, las vistas y los objetos de la base de datos, incluidos los permisos limitados, mientras que los controles más detallados permiten los privilegios por columna y la aplicación de políticas de seguridad, como la seguridad a nivel de fila (RLS) y el enmascaramiento dinámico de datos (DDM).

Concesión / Revocación

Con los permisos federados, puede definir permisos en los accesos por tabla, como el acceso para leer y escribir datos en tablas y vistas en la base de datos de permisos federados de Redshift desde cualquier almacén de Redshift.

GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:sales_analyst"; GRANT INSERT ON "sales_db@finance-catalog".sales_schema.sales_view TO "IAMR:sales_data_engineer"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst"; REVOKE DELETE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";

Los permisos federados de Amazon Redshift admiten permisos acotados que permiten conceder o revocar permisos en todos los objetos de un tipo dentro de una base de datos o esquema.

GRANT SELECT FOR TABLES IN SCHEMA "sales_db@finance-catalog".sales_schema TO "IAMR:sales_manager"; REVOKE UPDATE FOR TABLES IN SCHEMA sales_schmea DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";

Puede definir la concesión o revocación de los permisos de acceso en la base de datos.

GRANT CREATE ON DATABASE "sales_db@finance-catalog" TO "IAMR:sales_admin"; REVOKE TEMP ON DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";

Para obtener más información sobre los permisos federados de Amazon Redshift compatibles con la sintaxis para la concesión, consulte Permisos que puede conceder en el catálogo de permisos federados de Amazon Redshift.

Control de acceso detallado

Puede definir el control de acceso detallado sobre la información confidencial mediante el control de acceso por columna, la seguridad a nivel de fila (RLS) y el enmascaramiento dinámico de datos (DDM) en una base de datos con permisos de federación de Amazon Redshift. El control de acceso por columna permite definir con mayor precisión los privilegios de acceso por columna en tablas y vistas. Los superusuarios y los usuarios o roles con el rol sys:secadmin en la base de datos pueden crear políticas de RLS y DDM, adjuntar estas políticas a relaciones específicas y habilitar el RLS en una relación.

Control de acceso por columna:

Puede conceder o revocar privilegios específicos en columnas individuales de una tabla o vista.

GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table(order_number, sales_date, purchase_amount, sale_amount) TO "IAMR:sales_revenue_analyst"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view(order_number, sales_date, purchase_amount, sale_amount) FROM "IAMR:sales_revenue_analyst";

Seguridad a nivel de fila (RLS):

Puede activar o desactivar la seguridad a nivel de fila para una relación.

ALTER TABLE "sales_db@finance-catalog".sales_schema.sales_table ROW LEVEL SECURITY ON;

Puede crear, modificar o eliminar la política de RLS en la base de datos.

-- Create an RLS policy CREATE RLS POLICY "sales_db@finance-catalog".policy_america WITH (region VARCHAR(10)) USING (region = 'USA'); -- Alter an RLS policy ALTER RLS POLICY "sales_db@finance-catalog".policy_america USING (region IN ('USA', 'CANADA', 'Mexico')); -- Drop an RLS policy DROP RLS POLICY "sales_db@finance-catalog".policy_america;

Puede adjuntar o separar una política de RLS en una relación.

-- Attach an RLS policy ATTACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:america_sales_analyst"; -- Detach an RLS policy DETACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_view_america FROM "IAMR:global_sales_analyst";

Enmascaramiento dinámico de datos (DDM):

Puede crear, modificar o eliminar la política de enmascaramiento en la base de datos.

-- Create a masking policy CREATE MASKING POLICY "sales_db@finance-catalog".hash_credit WITH (credit_card varchar(256)) USING (sha2(credit_card + 'testSalt', 256)); -- Alter an masking policy ALTER MASKING POLICY "sales_db@finance-catalog".hash_credit USING (sha2(credit_card + 'otherTestSalt', 256)); -- Drop an masking policy DROP MASKING POLICY "sales_db@finance-catalog".hash_credit;

Puede adjuntar o separar una política de enmascaramiento en una relación.

-- Attach a masking policy ATTACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_table (credit_card) TO "IAMR:sales_analyst" PRIORITY 30; -- Detach a masking policy DETACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_view (credit_card) FROM "IAMR:transaction_analyst";

Un superusuario o un usuario con el privilegio sys:secadmin puede ver las políticas de RLS y DDM, así como sus archivos adjuntos en una relación con permisos federados, mediante el comando SHOW POLICIES.

nota
  • Las funciones definidas por el usuario (UDF) en RLS y las definiciones de políticas de DDM no son compatibles con los permisos federados de Amazon Redshift.

  • Las funciones SQL de Redshift user_is_member_of, role_is_member_of, user_is_member_of_role no son compatibles con los permisos federados de Amazon Redshift.

Permisos que puede conceder en el catálogo de permisos federados de Amazon Redshift

Instrucciones SQL para respaldar la administración de permisos en bases de datos con permisos federados de Amazon Redshift sobre recursos con distintos niveles de detalle. La sintaxis admite referencias de tablas locales (cuando se conecta a la base de datos que contiene el recurso o cuando la base de datos de origen está en USO) y referencias cruzadas totalmente cualificadas entre bases de datos.

Nota

  • username puede hacer referencia a un usuario de IAM, rol de IAM o usuario de IdC (AWS IAM Identity Center).

  • role_name puede hacer referencia a un grupo de IdC. No se admiten grupos de IAM.

Permisos básicos

GRANT { SELECT | INSERT | UPDATE | DELETE | TRUNCATE} ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { SELECT | INSERT | UPDATE | DELETE | TRUNCATE } ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }

Privilegios por columnas

GRANT { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }

Permisos acotados

GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE database@catalog TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMA schema_name [DATABASE database@catalog ] | DATABASE database@catalog } TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE database@catalog FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMA schema_name [ DATABASE database@catalog ] | DATABASE database@catalog } FROM { username | ROLE role_name } [, ...]