View a markdown version of this page

Criptografia de dados em repouso no AWS Lambda - AWS Lambda

Criptografia de dados em repouso no AWS Lambda

O AWS Lambda sempre fornece criptografia em repouso para os seguintes recursos:

  • Variáveis de ambiente

  • Os arquivos dos quais você faz upload no Lambda, incluindo pacotes de implantação e arquivos de camada

  • Objetos de critérios do filtro do mapeamento da origem de eventos

  • Dados de execução duráveis

nota

Para funções e camadas que usam o armazenamento de código do S3 autogerenciado, o Lambda não armazena uma cópia do seu código-fonte. Seu código permanece no bucket do S3 e a criptografia em repouso do código-fonte é gerenciada pela configuração do bucket do S3. O Lambda usará KMSKeyArn para criptografar a versão descompactada do pacote que o Lambda usa para invocar a função. Para ter mais informações, consulte Como proteger os dados usando a criptografia do lado do servidor no Guia do usuário do Amazon Simple Storage Service.

Você também pode configurar o Lambda para usar uma chave gerenciada pelo cliente para criptografar as variáveis do ambiente, os pacotes de implantação .zip, os objetos de critérios de filtro e os dados de execução duráveis.

O Amazon CloudWatch Logs e o AWS X-Ray também criptografam dados por padrão, e podem ser configurados para usarem uma chave gerenciada pelo cliente. Para obter mais detalhes, consulte Criptografar dados de log no CloudWatch Logs e Proteção de dados no AWS X-Ray.

Monitorar suas chaves de criptografia para o Lambda

Quando você usa uma chave do AWS KMS gerenciada pelo cliente com o Lambda, também pode usar o AWS CloudTrail. Os exemplos a seguir são eventos do CloudTrail para chamadas Decrypt, DescribeKey e GenerateDataKey feitas pelo Lambda para acessar dados criptografados por sua chave gerenciada pelo cliente.

Para obter exemplos do CloudTrail específicos para dados de execução duráveis, consulte Monitoramento das chaves do KMS para funções duráveis.

Decrypt

Se você usou uma chave do AWS KMS gerenciada pelo cliente para criptografar seu objeto de critérios de filtro, o Lambda envia uma solicitação Decrypt em seu nome quando você tenta acessá-la em texto simples (por exemplo, de uma chamada ListEventSourceMappings). O evento de exemplo a seguir registra a operação Decrypt:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:45:23Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2024-05-30T01:05:46Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws-crypto-public-key": "ABCD+7876787678+CDEFGHIJKL/888666888999888555444111555222888333111==", "aws:lambda:EventSourceArn": "arn:aws:sqs:eu-west-1:123456789012:sample-source", "aws:lambda:FunctionArn": "arn:aws:lambda:eu-west-1:123456789012:function:sample-function" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
DescribeKey

Se você usou uma chave do AWS KMS gerenciada pelo cliente para criptografar seu objeto de critérios de filtro, o Lambda envia uma solicitação DescribeKey em seu nome quando você tenta acessá-la (por exemplo, de uma chamada GetEventSourceMapping). O evento de exemplo a seguir registra a operação DescribeKey:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:45:23Z", "mfaAuthenticated": "false" } } }, "eventTime": "2024-05-30T01:09:40Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "eu-west-1", "sourceIPAddress": "54.240.197.238", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "requestParameters": { "keyId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_256_GCM_SHA384", "clientProvidedHostHeader": "kms.eu-west-1.amazonaws.com" }, "sessionCredentialFromConsole": "true" }
GenerateDataKey

Quando você usa uma chave do AWS KMS gerenciada pelo cliente para criptografar seu objeto de critérios de filtro em uma chamada CreateEventSourceMapping ou UpdateEventSourceMapping, o Lambda envia uma solicitação GenerateDataKey em seu nome para gerar uma chave de dados para criptografar os critérios de filtro (criptografia envelopada). O evento de exemplo a seguir registra a operação GenerateDataKey:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::123456789012:assumed-role/role-name/example", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::123456789012:role/role-name", "accountId": "123456789012", "userName": "role-name" }, "attributes": { "creationDate": "2024-05-30T00:06:07Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2024-05-30T01:04:18Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "eu-west-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "requestParameters": { "numberOfBytes": 32, "keyId": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws-crypto-public-key": "ABCD+7876787678+CDEFGHIJKL/888666888999888555444111555222888333111==", "aws:lambda:EventSourceArn": "arn:aws:sqs:eu-west-1:123456789012:sample-source", "aws:lambda:FunctionArn": "arn:aws:lambda:eu-west-1:123456789012:function:sample-function" }, }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-1:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }