저장된 데이터 암호화 - Amazon Inspector

저장된 데이터 암호화

Amazon Inspector는 기본적으로 AWS 암호화 솔루션을 사용하여 저장 데이터를 저장합니다. Amazon Inspector에서는 다음과 같은 데이터를 암호화합니다.

  • AWS Systems Manager를 사용하여 수집된 리소스 인벤토리

  • Amazon Elastic Container Registry 이미지에서 구문 분석된 리소스 인벤토리

  • AWS Key Management Service에서 AWS 소유 암호화 키를 사용하여 생성된 보안 조사 결과

AWS 소유 키는 사용자가 관리하거나 사용하거나 볼 수 없습니다. 그러나 데이터 암호화 키를 보호하기 위해 사용자가 별도의 조치를 취하거나 프로그램을 변경할 필요도 없습니다. 자세한 내용은 AWS 소유 키를 참조하세요.

Amazon Inspector를 비활성화하면 수집된 인벤토리 및 보안 조사 결과와 같이 저장 또는 유지 관리되는 모든 리소스가 영구적으로 삭제됩니다.

결과 코드에 대한 저장 중 암호화

Amazon Inspector Lambda 코드 스캔의 경우, Amazon Inspector는 CodeGuru와 협력하여 코드에 취약성이 있는지 스캔합니다. 취약성이 탐지되면 CodeGuru는 취약성이 포함된 코드 스니펫을 추출하여 Amazon Inspector에서 액세스를 요청할 때까지 해당 코드를 저장합니다. 기본적으로 CodeGuru는 AWS 소유 키를 사용하여 추출된 코드를 암호화하지만, 암호화에 자체 고객 관리형 AWS KMS 키를 사용하도록 Amazon Inspector를 구성할 수 있습니다.

다음 워크플로우는 Amazon Inspector에서 사용자가 구성한 키를 사용하여 코드를 암호화하는 방법을 설명합니다.

  1. Amazon Inspector UpdateEncryptionKey API를 사용하여 Amazon Inspector에 AWS KMS 키를 제공합니다.

  2. Amazon Inspector에서 AWS KMS 키 에 대한 정보를 CodeGuru로 전달합니다. CodeGuru에서 해당 정보를 나중에 사용할 수 있도록 저장합니다.

  3. CodeGuru가 Amazon Inspector에서 구성한 키에 대해 AWS KMS로부터 권한 부여를 요청합니다.

  4. CodeGuru가 AWS KMS 키에서 암호화된 데이터 키를 생성하고 저장합니다. 이 데이터 키는 CodeGuru에 저장된 코드 데이터를 암호화하는 데 사용됩니다.

  5. Amazon Inspector가 코드 스캔에서 데이터를 요청할 때마다 CodeGuru는 권한 부여를 사용하여 암호화된 데이터 키를 복호화한 다음 해당 키로 데이터를 복호화하여 검색할 수 있도록 합니다.

Lambda 코드 스캔을 비활성화하면 CodeGuru는 권한 부여를 폐기하고 관련 데이터 키를 삭제합니다.

고객 관리형 키를 사용한 코드 암호화에 대한 권한

암호화를 사용하려면 AWS KMS 작업에 대한 액세스를 허용하는 정책과 조건 키를 통해 해당 작업을 사용할 수 있는 권한을 Amazon Inspector 및 CodeGuru에 부여하는 명령문이 있어야 합니다.

계정의 암호화 키를 설정, 업데이트 또는 재설정하는 경우 Amazon Inspector 관리자 정책(예: AWS 관리형 정책: AmazonInspector2FullAccess)을 사용해야 합니다. 또한 암호화를 위해 선택한 키에 대한 결과 또는 데이터에서 코드 스니펫을 검색해야 하는 읽기 전용 사용자에게 다음 권한을 부여해야 합니다.

KMS의 경우 정책에서 다음 작업을 수행할 수 있도록 허용해야 합니다.

  • kms:CreateGrant

  • kms:Decrypt

  • kms:DescribeKey

  • kms:GenerateDataKeyWithoutPlainText

  • kms:Encrypt

  • kms:RetireGrant

정책에 올바른 AWS KMS 권한이 있는지 확인한 후에는 Amazon Inspector 및 CodeGuru에서 암호화에 키를 사용할 수 있도록 허용하는 명령문을 첨부해야 합니다. 다음 정책 설명을 첨부합니다.

참고

리전을 Amazon Inspector Lambda 코드 스캔이 활성화된 AWS 리전으로 바꾸세요.

{ "Sid": "allow CodeGuru Security to request a grant for a AWS KMS key", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "Encrypt", "Decrypt", "RetireGrant", "DescribeKey" ] }, "StringEquals": { "kms:ViaService": [ "codeguru-security.Region.amazonaws.com" ] } } }, { "Sid": "allow Amazon Inspector and CodeGuru Security to use your AWS KMS key", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:RetireGrant", "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "inspector2.Region.amazonaws.com", "codeguru-security.Region.amazonaws.com" ] } } }
참고

명령문을 추가할 때 구문이 올바른지 확인합니다. 정책에는 JSON 형식이 사용됩니다. 즉, 정책에 명령문을 추가하는 위치에 따라 명령문 앞이나 뒤에 쉼표를 추가해야 합니다. 명령문을 마지막 명령문으로 추가하는 경우 위 명령문의 닫는 괄호 뒤에 쉼표를 추가합니다. 명령문을 첫 번째 명령문으로 추가하거나 기존 두 명령문 사이에 추가하는 경우 명령문의 닫는 괄호 뒤에 쉼표를 추가합니다.

고객 관리형 키를 사용하여 암호화 구성

고객 관리형 키를 사용하여 계정 암호화를 구성하려면 고객 관리형 키를 사용한 코드 암호화에 대한 권한에 설명된 권한을 가진 Amazon Inspector 관리자여야 합니다. 또한 결과와 동일한 AWS 리전의 AWS KMS 키 또는 다중 리전 키가 필요합니다. 계정의 기존 대칭 키를 사용하거나 AWS Management Console 또는 AWS KMS API를 사용하여 고객 관리형 대칭 키를 생성할 수 있습니다. 자세한 내용은 AWS KMS 사용 설명서에서 대칭 암호화 AWS KMS 키 생성을 참조하세요.

Amazon Inspector API를 사용하여 암호화 구성

암호화 키를 설정하려면 Amazon Inspector 관리자로 로그인한 상태에서 Amazon Inspector API의 UpdateEncryptionKey 작업을 수행합니다. API 요청의 kmsKeyId 필드에 사용하려는 AWS KMS 키의 ARN을 지정합니다. scanTypeCODE를 입력하고 resourceTypeAWS_LAMBDA_FUNCTION을 입력합니다.

UpdateEncryptionKey API를 사용하여 Amazon Inspector에서 암호화에 사용하는 AWS KMS 키를 확인할 수 있습니다.

참고

고객 관리형 키를 설정하지 않은 상태에서 GetEncryptionKey를 사용하려고 하면 ResourceNotFoundException 오류가 반환되는데, 이는 AWS 소유 키가 암호화에 사용되고 있다는 의미입니다.

Amazon Inspector 또는 CodeGuru에 대한 액세스를 거부하기 위해 키를 삭제하거나 정책을 변경하면 코드 취약성 결과에 액세스할 수 없게 되며 계정에 대한 Lambda 코드 스캔이 실패합니다.

ResetEncryptionKey를 사용하면 Amazon Inspector 결과의 일부로 추출한 코드를 암호화하는 데 AWS 소유 키를 다시 사용할 수 있습니다.