Restricción del acceso a los parámetros de Systems Manager mediante políticas de IAM - AWS Systems Manager

Restricción del acceso a los parámetros de Systems Manager mediante políticas de IAM

Restrinja el acceso a parámetros de AWS Systems Manager mediante AWS Identity and Access Management (IAM). En concreto, debe crear políticas de IAM que restrinjan el acceso a las siguientes operaciones de las API:

Si utiliza políticas de IAM para restringir el acceso a parámetros de Systems Manager, le recomendamos que cree y utilice políticas de IAM restrictivas. Por ejemplo, la siguiente política permite a un usuario llamar a las operaciones de la API DescribeParameters y GetParameters para un conjunto limitado de recursos. Esto significa que el usuario puede obtener información sobre ellas y utilizar todos los parámetros que comiencen por prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
importante

Si un usuario tiene acceso a una ruta, puede obtener acceso a todos los niveles de esa ruta. Por ejemplo, si un usuario tiene permiso para obtener acceso a la ruta /a, el usuario también puede obtener acceso a /a/b. Incluso si a un usuario se le ha denegado explícitamente el acceso en IAM al parámetro /a/b, aun así puede llamar a la operación de la API GetParametersByPath recursivamente para /a y ver /a/b.

En el caso de los administradores de confianza, puede proporcionar acceso a todas las operaciones de la API de parámetros de Systems Manager mediante el uso de una política similar a la del siguiente ejemplo. Esta política concede al usuario acceso completo a todos los parámetros de producción que empiecen por dbserver-prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Denegar permisos

Cada API es única y tiene operaciones y permisos distintos que puede permitir o denegar individualmente. Una denegación explícita en cualquier política invalida el permiso concedido.

nota

La clave predeterminada AWS Key Management Service (AWS KMS) tiene permiso Decrypt para todos los principales de IAM dentro de la Cuenta de AWS. Si desea tener diferentes niveles de acceso a parámetros de SecureString en su cuenta, no es recomendable utilizar la clave predeterminada.

Si desea que todas las operaciones de API que recuperen valores de parámetros tengan el mismo comportamiento, puede utilizar un patrón como GetParameter* en una política. En el siguiente ejemplo se muestra cómo denegar GetParameter, GetParameters, GetParameterHistory, y GetParametersByPathpara todos los parámetros que comiencen con prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

En el siguiente ejemplo se muestra cómo denegar algunos comandos mientras se permite al usuario realizar otros comandos en todos los parámetros que comienzan con prod-*.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
nota

El historial de parámetros incluye todas las versiones de parámetros, incluida la actual. Por lo tanto, si se deniega a un usuario el permiso para GetParameter, GetParameters, y GetParameterByPath pero se le permite el permiso para GetParameterHistory, pueden ver el parámetro actual, incluyendo los parámetros SecureString, mediante GetParameterHistory.

Permitir que se ejecuten solo parámetros específicos en los nodos

Puede controlar el acceso de forma que los nodos administrados solo puedan ejecutar los parámetros que especifique.

Si elige el tipo de datos SecureString cuando cree el parámetro, Systems Manager utiliza AWS KMS para cifrar el valor del parámetro. AWS KMS cifra el valor mediante una clave de Clave administrada de AWS o una clave administrada por el cliente. Para obtener más información acerca de AWS KMS y AWS KMS key, consulte Guía para desarrolladores de AWS Key Management Service.

Puede ver la Clave administrada de AWS ejecutando el siguiente comando desde la AWS CLI.

aws kms describe-key --key-id alias/aws/ssm

El siguiente ejemplo permite que los nodos obtengan un valor de parámetro solo para los parámetros que comienzan con prod-. Si el parámetro es un parámetro de SecureString, el nodo descifra la cadena mediante AWS KMS.

nota

Las políticas de instancia, como las del ejemplo siguiente, se asignan a el rol de la instancia en IAM. Para obtener más información acerca de cómo configurar el acceso a las características de Systems Manager, incluido el modo de asignar políticas a los usuarios y las instancias, consulte Configuración de Systems Manager para instancias EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

Los permisos de IAM para utilizar claves predeterminadas de AWS y claves administradas por el cliente

Los parámetros Parameter Store de SecureString se cifran y descifran mediante claves AWS KMS. Puede elegir cifrar los parámetros SecureString mediante una AWS KMS key o la clave KMS predeterminada proporcionada por AWS.

Cuando se utiliza una clave administrada por el cliente, la política de IAM que concede a un usuario acceso a un parámetro o ruta de parámetro debe proporcionar permisos kms:Encrypt explícitos para la clave. Por ejemplo, la siguiente política permite a un usuario crear, actualizar y ver parámetros SecureString que comienzan por prod- en la Región de AWS y la Cuenta de AWS especificadas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" Footnote callout 1 ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1El permiso kms:GenerateDataKey es necesario para crear parámetros avanzados cifrados utilizando la clave administrada por el cliente especificada.

Por el contrario, todos los usuarios de la cuenta de cliente tienen acceso a la clave administrada de AWS predeterminada. Si utiliza esta clave predeterminada para cifrar parámetros SecureString y no desea que los usuarios trabajen con parámetros SecureString, sus políticas de IAM deben denegar explícitamente el acceso a la clave predeterminada, como se demuestra en el siguiente ejemplo de política.

nota

Puede localizar el Nombre de recurso de Amazon (ARN) de la clave predeterminada en la consola de AWS KMS de la página de claves administradas de AWS. La clave predeterminada es la que se identifica con aws/ssm en la columna Alias.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

Si necesita un control de acceso detallado sobre los parámetros SecureString de su cuenta, debe utilizar una clave administrada por el cliente para proteger y restringir el acceso a estos parámetros. También se recomienda utilizar AWS CloudTrail para monitorear las actividades de los parámetros SecureString.

Para obtener más información, consulte los temas siguientes: