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 AWS Directory Service para Microsoft Active Directory concede a otro servicio para el recurso. 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. Si utiliza claves de contexto de condición global y el valor de aws:SourceArn
contiene el ID de cuenta, el valor de aws:SourceAccount
y la cuenta en el valor de aws:SourceArn
deben utilizar el mismo ID de cuenta cuando se utiliza en la misma instrucción de política. Utilice aws:SourceArn
si desea que solo se asocie un recurso al acceso entre servicios. Utilice aws:SourceAccount
si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.
En el siguiente ejemplo, el valor de aws:SourceArn
debe ser un grupo de registro de CloudWatch.
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 especifica varios recursos, utilice la clave de condición de contexto global aws:SourceArn
con comodines (*
) para las partes desconocidas del ARN. Por ejemplo, arn:aws:
. servicename
:*:123456789012
:*
En el siguiente ejemplo, se muestra cómo se pueden utilizar las claves contextuales de condición global aws:SourceArn
y aws:SourceAccount
en AWS Managed Microsoft AD para evitar el problema del adjunto confundido.
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "ds.amazonaws.com" }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
YOUR_REGION
:YOUR_ACCOUNT_NUMBER
:log-group:/aws/directoryservice/YOUR_LOG_GROUP
:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ds:YOUR_REGION
:YOUR_ACCOUNT_NUMBER
:directory/YOUR_DIRECTORY_ID
" }, "StringEquals": { "aws:SourceAccount":"123456789012"
} } } }
En el siguiente ejemplo, el valor de aws:SourceArn
debe ser un tema de SNS en la cuenta. Por ejemplo, puede usar algo como arn:aws:sns:ap-southeast-1:123456789012:DirectoryMonitoring_d-966739499f
, en el que “ap-southeast-1” es la región, “123456789012” es el identificador de cliente y “DirectoryMonitoring_d-966739499f” es el nombre del tema de Amazon SNS que ha creado.
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 especifica varios recursos, utilice la clave de condición de contexto global aws:SourceArn
con comodines (*
) para las partes desconocidas del ARN. Por ejemplo, arn:aws:
. servicename
:*:123456789012
:*
En el siguiente ejemplo, se muestra cómo se pueden utilizar las claves contextuales de condición global aws:SourceArn
y aws:SourceAccount
en AWS Managed Microsoft AD para evitar el problema del adjunto confundido.
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "ds.amazonaws.com" }, "Action": ["SNS:GetTopicAttributes", "SNS:SetTopicAttributes", "SNS:AddPermission", "SNS:RemovePermission", "SNS:DeleteTopic", "SNS:Subscribe", "SNS:ListSubscriptionsByTopic", "SNS:Publish"], "Resource": [ "arn:aws:sns:
YOUR_REGION
:YOUR_ACCOUNT_NUMBER
:YOUR_SNS_TOPIC_NAME
" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ds:YOUR_REGION
:YOUR_ACCOUNT_NUMBER
:directory/YOUR_EXTERNAL_DIRECTORY_ID
" }, "StringEquals": { "aws:SourceAccount": "123456789012
" } } } }
En el siguiente ejemplo, se muestra una política de confianza de IAM de un rol al que se le ha delegado el acceso a la consola. El valor de aws:SourceArn
debe ser un recurso del directorio de su cuenta. Para obtener más información, consulte Tipos de recursos definidos por AWS Directory Service. Por ejemplo, puede usar arn:aws:ds:us-east-1:123456789012:directory/d-1234567890
, en el que 123456789012
es su ID de cliente y d-1234567890
es su ID de directorio.
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "ds.amazonaws.com" }, "Action": [ "sts:AssumeRole" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ds:
YOUR_REGION
:YOUR_ACCOUNT_NUMBER
:directory/YOUR_DIRECTORY_ID
" }, "StringEquals": { "aws:SourceAccount": "123456789012
" } } } }