Conectar con AWS KMS a través de un punto de conexión de VPC - AWS Key Management Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conectar con AWS KMS a través de un punto de conexión de VPC

Puede conectarse directamente a AWS KMS mediante un punto de conexión de interfaz privada de su nube virtual privada (VPC). Cuando utiliza un punto de conexión de VPC de interfaz, la comunicación entre su VPC y AWS KMS se realiza en su totalidad dentro de la red de AWS.

AWS KMS es compatible con puntos de conexión de Amazon Virtual Private Cloud (Amazon VPC) con tecnología de AWS PrivateLink. Cada punto de conexión de VPC está representado por una o varias Interfaces de red elásticas (ENI) con direcciones IP privadas en las subredes de la VPC.

El punto de conexión de VPC de tipo interfaz conecta directamente la VPC con AWS KMS sin necesidad de gateway de Internet, dispositivos NAT, conexiones de VPN ni conexiones de AWS Direct Connect. Las instancias de la VPC no necesitan direcciones IP públicas para comunicarse con AWS KMS.

Regiones

AWS KMS admite los puntos de conexión de VPC y las políticas de puntos de conexión de VPC en todas las Regiones de AWS en las que se admite AWS KMS.

Consideraciones para los puntos de conexión de VPC de AWS KMS

Antes de configurar un punto de conexión de VPC de interfaz para AWS KMS, revise el tema Propiedades y limitaciones de los puntos de conexión de interfaz en la Guía de AWS PrivateLink.

El soporte de AWS KMS para un punto de conexión de VPC incluye lo siguiente.

Creación de un punto de conexión de VPC para AWS KMS

Puede crear un punto de conexión de VPC para AWS KMS mediante la consola de Amazon VPC o la API de Amazon VPC. Para obtener más información, consulte Creación de un punto de conexión de interfaz en la Guía de AWS PrivateLink.

  • Para crear un punto de conexión de VPC para AWS KMS, utilice el siguiente nombre de servicio:

    com.amazonaws.region.kms

    Por ejemplo, en la Región EE. UU. Oeste (Oregón) (us-west-2), el nombre del servicio sería:

    com.amazonaws.us-west-2.kms
  • Para crear un punto de conexión de VPC que se conecte a un punto de conexión FIPS de AWS KMS, utilice el siguiente nombre de servicio:

    com.amazonaws.region.kms-fips

    Por ejemplo, en la Región EE. UU. Oeste (Oregón) (us-west-2), el nombre del servicio sería:

    com.amazonaws.us-west-2.kms-fips

Para facilitar el uso del punto de conexión de VPC, puede habilitar un nombre de DNS privado para el punto de conexión de VPC. Si selecciona la opción Enable DNS Name (Habilitar nombre DNS), el nombre del host de DNS de AWS KMS estándar se resuelve en el punto de conexión de VPC. Por ejemplo, https://kms.us-west-2.amazonaws.com se resolvería en un punto de conexión de VPC conectado al nombre del servicio com.amazonaws.us-west-2.kms.

Esta opción facilita el uso del punto de conexión de VPC. Además, los SDK de la AWS y AWS CLI utilizan el nombre de alojamiento DNS de AWS KMS estándar de forma predeterminada, por lo que no es necesario especificar la URL del punto de conexión de VPC en las aplicaciones y los comandos.

Para obtener más información, consulte Acceso a un servicio a través de un punto de conexión de interfaz en la Guía de AWS PrivateLink.

Conectar con un punto de conexión de VPC de AWS KMS

Puede conectarse con AWS KMS a través del punto de conexión de VPC mediante el SDK de AWS, la AWS CLI o AWS Tools for PowerShell. Para especificar el punto de conexión de VPC, utilice su nombre de DNS.

Por ejemplo, este comando list-keys utiliza el parámetro endpoint-url para especificar el punto de conexión de VPC. Para utilizar un comando de este tipo, sustituya el ID del punto de conexión de VPC del ejemplo por uno de su cuenta.

$ aws kms list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

Si ha habilitado los nombres de host privados al crear el punto de conexión de VPC, no es necesario que especifique la URL de este en los comandos de la CLI ni en la configuración de la aplicación. El nombre del host de DNS de AWS KMS estándar se resuelve en el punto de conexión de VPC. La AWS CLI y los SDK utilizan este nombre de host de forma predeterminada, por lo que puede empezar a utilizar el punto de conexión de VPC para conectarse a un punto de conexión de AWS KMS regional sin cambiar nada en los scripts ni en las aplicaciones.

Para utilizar nombres de host privados, se deben establecer los atributos enableDnsHostnames y enableDnsSupport de la VPC en true. Para establecer estos atributos, utilice la ModifyVpcAttributeoperación. Para obtener más información, consulte Ver y actualizar los atributos de DNS de su VPC en la Guía del usuario de Amazon VPC.

Control del acceso a un punto de conexión de VPC

Para controlar el acceso al punto de conexión de VPC paraAWS KMS, adjunte una política de puntos de conexión de VPC a su punto de conexión de VPC. La política de punto de conexión determina si las entidades principales pueden utilizar el punto de conexión de VPC para llamar a operaciones AWS KMS en recursos de AWS KMS.

Puede crear una política de punto de conexión de VPC cuando cree el punto de conexión y puede cambiar la política de punto de conexión de VPC en cualquier momento. Utilice la consola de administración de VPC o las operaciones CreateVpcEndpointo ModifyVpcEndpoint. También puede crear y cambiar una política de punto de conexión de VPC mediante una plantilla AWS CloudFormation. Para obtener ayuda sobre el uso de la consola de administración de la VPC, consulte Creación de un punto de conexión de interfaz y Modificación de un punto de conexión de interfaz en la Guía de AWS PrivateLink.

nota

AWS KMS admite políticas de puntos de conexión de VPC a partir de julio de 2020. Puntos de conexión de VPC para AWS KMS que se crearon antes de esa fecha tienen la política de puntos de conexión de VPC predeterminada, pero puede cambiarla en cualquier momento.

Para obtener ayuda sobre cómo escribir y dar formato a un documento de política JSON, consulte la Referencia de políticas JSON de IAM en la Guía del usuario de IAM.

Uso de políticas de punto de conexión de VPC

Para una solicitud AWS KMS que utiliza un punto de conexión de VPC para tener éxito, la entidad principal requiere permisos de dos orígenes:

  • Una política de claves, política de IAM, o bien concesión debe dar permiso a la entidad principal para llamar a la operación en el recurso (clave KMS o alias).

  • Una política de extremo de VPC debe conceder a la entidad principal permiso para utilizar el punto de conexión para realizar la solicitud.

Por ejemplo, una política de clave puede conceder permiso a una entidad principal para llamar a Descifrado en una clave KMS en particular. Sin embargo, es posible que la política de punto de conexión de VPC no permita que la entidad principal llame a Decrypt en esa clave KMS mediante el punto de conexión.

O bien, una política de punto final de VPC podría permitir que un principal utilice el punto final para invocar determinadas claves DisableKeyde KMS. Pero si la entidad principal no tiene esos permisos de una política de clave, política de IAM o concesión, se produce un error en la solicitud.

Política de puntos de conexión de VPC predeterminada

Cada punto de conexión de VPC tiene una política de punto de conexión de VPC, pero no es necesario que especifique la política. Si no especifica una política, la política de punto de conexión predeterminada permite todas las operaciones de todas las entidades principales en todos los recursos del punto de conexión.

Sin embargo, para los recursos de AWS KMS, la entidad principal también debe tener permiso para llamar a la operación desde una política de clave, política de IAM, o concesión. Por lo tanto, en la práctica, la política predeterminada dice que si una entidad principal tiene permiso para llamar a una operación en un recurso, también puede llamarla mediante el punto de conexión.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ] }

Para permitir que las entidades principales utilicen el punto de conexión de VPC solo para un subconjunto de sus operaciones permitidas, cree o modifique la política de puntos de conexión de VPC.

Creación de una política de punto de conexión de VPC

Una política de punto de conexión de VPC determina si una entidad principal tiene permiso para utilizar el punto de conexión de VPC para realizar operaciones en un recurso. Para recursos de AWS KMS, la entidad principal también debe tener permiso para realizar las operaciones desde una política de clave,política de IAM, o bien concesión.

Cada declaración de política de puntos de conexión de VPC requiere los siguientes elementos:

  • La entidad principal que puede realizar acciones

  • Las acciones que se pueden realizar

  • Los recursos en los que se pueden llevar a cabo las acciones

La declaración de política no especifica el punto de conexión de VPC. En cambio, se aplica a cualquier punto de conexión de VPC al que esté asociada dicha política. Para obtener más información, consulte Control del acceso a los servicios con puntos de conexión de VPC en la guía del usuario de Amazon VPC.

A continuación, se muestra un ejemplo de una política de un punto de conexión de VPC para AWS KMS. Cuando la política se asocia a un punto de conexión de VPC, permite a ExampleUser utilizar el punto de conexión de VPC para llamar a las operaciones especificadas en las claves KMS especificadas. Antes de utilizar una política como esta, sustituya la entidad principal de ejemplo y ARN de clave con valores válidos de tu cuenta.

{ "Statement":[ { "Sid": "AllowDecryptAndView", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

AWS CloudTrail registra todas las operaciones que utilizan el punto de conexión de VPC. Sin embargo, tus CloudTrail registros no incluyen las operaciones solicitadas por los responsables de otras cuentas ni las operaciones relacionadas con las claves de KMS de otras cuentas.

Como tal, es posible que desee crear una política de punto de conexión de VPC que impida que las entidades principales de cuentas externas utilicen el punto de conexión de VPC para llamar a cualquier operaciones de AWS KMS en cualquier clave de la cuenta local.

En el siguiente ejemplo, se usa la clave de condición PrincipalAccount global aws: para denegar el acceso a todos los principales para todas las operaciones de todas las claves de KMS, a menos que el principal esté en la cuenta local. Antes de utilizar una política como esta, sustituya el ID de la cuenta de ejemplo por uno válido.

{ "Statement": [ { "Sid": "AccessForASpecificAccount", "Principal": {"AWS": "*"}, "Action": "kms:*", "Effect": "Deny", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

Visualización de una política de punto de conexión de VPC

Para ver la política de puntos de conexión de la VPC de un punto final, utilice la consola de administración de la VPC o la operación. DescribeVpcEndpoints

Los siguientes comandos de AWS CLI obtienen la política para el punto de conexión con el ID de punto de conexión de VPC especificado.

Antes de ejecutar este comando, reemplace el ID de punto de conexión de ejemplo por uno válido de su cuenta.

$ aws ec2 describe-vpc-endpoints \ --query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]' --output text

Utilizar un punto de conexión de VPC en una declaración de política

Puede controlar el acceso a recursos y operaciones de AWS KMScuando la solicitud proviene de VPC o utiliza un punto de conexión de VPC. Para ello, utilice una de las siguientes claves de condición global en una política de claves o política de IAM.

  • Utilice la clave de condición aws:sourceVpce para conceder o restringir el acceso en función del punto de conexión de VPC.

  • Utilice la clave de condición aws:sourceVpc para conceder o restringir el acceso en función de la VPC que aloja el punto de conexión privado.

nota

Actúe con precaución al crear políticas de IAM y de claves basadas en el punto de conexión de VPC. Si una declaración de política requiere que las solicitudes procedan de una VPC o un punto de conexión de VPC determinados, las solicitudes de los servicios de AWS integrados que utilicen un recurso AWS KMS en su nombre podrían producir un error. Para obtener ayuda, consulte Usar condiciones de punto de conexión de VPC en políticas con permisos de AWS KMS.

Además, la clave de condición aws:sourceIP no es efectiva si la solicitud procede de un punto de conexión de Amazon VPC. Para restringir las solicitudes a un punto de conexión de VPC, utilice las claves de condición aws:sourceVpce o aws:sourceVpc. Para obtener más información, consulte Administración de identidades y accesos para puntos de conexión de VPC y servicios de puntos de conexión de VPC en la Guía de AWS PrivateLink.

Puede usar estas claves de condición globales para controlar el acceso a AWS KMS keys (claves KMS), a los alias y a operaciones como esas CreateKeyque no dependen de ningún recurso en particular.

Por ejemplo, la siguiente política de claves de ejemplo permite a un usuario realizar operaciones de cifrado con una clave KMS solo cuando la solicitud utiliza el punto de conexión de VPC especificado. Cuando un usuario realiza una solicitud a AWS KMS, el ID del punto de conexión de VPC de la solicitud se compara con el valor de la clave de condición aws:sourceVpce de la política. Si no coinciden, la solicitud se deniega.

Para utilizar una política como esta, sustituya el ID de la cuenta de Cuenta de AWS del marcador de posición y los ID del punto de conexión de VPC por valores válidos para su cuenta.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

También puede utilizar la clave de condición aws:sourceVpc para restringir el acceso a las claves KMS en función de la VPC en la que reside el punto de conexión.

La siguiente política de claves de ejemplo permite comandos que administran la clave KMS solo cuando proceden de vpc-12345678. Además, permite comandos que utilizan la clave KMS para operaciones criptográficas únicamente si proceden de vpc-2b2b2b2b. Podría utilizar una política como esta en caso de que una aplicación se ejecute en una VPC, pero utiliza una segunda VPC aislada para funciones de administración.

Para utilizar una política como esta, sustituya el ID de la cuenta de Cuenta de AWS del marcador de posición y los ID del punto de conexión de VPC por valores válidos para su cuenta.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ] }

Registro de su punto de conexión de VPC

AWS CloudTrail registra todas las operaciones que utilizan el punto de conexión de VPC. Cuando una solicitud a AWS KMS utiliza un punto de conexión de VPC, el ID de este aparece en la entrada de registro de AWS CloudTrail que registra la solicitud. Puede utilizar el ID del punto de conexión para auditar el uso del punto de conexión de VPC de AWS KMS.

Sin embargo, tus CloudTrail registros no incluyen las operaciones solicitadas por los responsables de otras cuentas ni las solicitudes de AWS KMS operaciones con las claves y los alias de KMS de otras cuentas. Además, para proteger su VPC, las solicitudes que son denegadas por una política de puntos de conexión de la VPC, pero de lo contrario se habría permitido, no se registran en AWS CloudTrail.

Por ejemplo, esta entrada de log de ejemplo registra una solicitud GenerateDataKey que ha utilizado el punto de enlace de la VPC. El campo vpcEndpointId aparece al final de la entrada de log.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestParameters":{ "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId":"111122223333", "type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a" }