Prevención de la sustitución confusa entre servicios
El problema de la sustitución confusa es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación entre servicios puede dar lugar al problema de la sustitución confusa. La suplantación entre servicios puede producirse cuando un servicio (el servicio que lleva a cabo las llamadas) llama a otro servicio (el servicio al que se llama). El servicio que lleva a cabo las llamadas se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que lo ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta.
Se recomienda utilizar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en las políticas de recursos para limitar los permisos que Amazon Aurora DSQL concede a otro servicio para el recurso. Utiliza aws:SourceArn si desea que solo se asocie un recurso al acceso entre servicios. Utiliza aws:SourceAccount si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.
La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de aws:SourceArn con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si está especificando varios recursos, utilice la clave de condición de contexto global aws:SourceArn con caracteres comodines (*) para las partes desconocidas del ARN. Por ejemplo, arn:aws:. dsql:*:123456789012:*
Si el valor de aws:SourceArn no contiene el ID de cuenta, como un ARN de bucket de Amazon S3, debe utilizar ambas claves de contexto de condición global para limitar los permisos.
El valor de aws:SourceArn debe ser el ARN del recurso de Aurora DSQL en nombre del cual actúa el rol de servicio.
El siguiente ejemplo muestra cómo se pueden utilizar las claves de contexto de condición global aws:SourceArn y aws:SourceAccount en Aurora DSQL para prevenir el error de la sustitución confusa.
Rol de servicio de flujo de CDC
Los flujos de captura de datos de cambios (CDC) requieren un rol de servicio de IAM que Aurora DSQL asume para escribir los registros de CDC en su destino. Al crear este rol, utilice las condiciones aws:SourceAccount e aws:SourceArn en la política de confianza para garantizar que solo los flujos de CDC de su cuenta puedan asumir el rol.
Establezca aws:SourceArn como el patrón de ARN de flujo para el clúster que utiliza el rol. Dado que Aurora DSQL no ha asignado el identificador del flujo al crearlo, utilice un comodín para la parte del ARN correspondiente al flujo:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DSQLAssumeRole", "Effect": "Allow", "Principal": { "Service": "dsql.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "your-account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:dsql:region:your-account-id:cluster/cluster-id/stream/*" } } } ] }
Una vez creado un flujo, puede restringir aws:SourceArn al ARN exacto del flujo si el rol gestiona un único flujo. Para obtener una explicación detallada de la política de confianza y la política de permisos de los roles de servicio de CDC, consulte Configuración de IAM.