Security Command Center에 환경 변수의 보안 비밀 보고

이 페이지에서는 Sensitive Data Protection 검색 서비스를 사용하여 보안 비밀이 Cloud Functions 환경 변수에 있는지 여부를 확인하는 방법을 설명합니다. Sensitive Data Protection은 모든 발견 항목을 Security Command Center에 취약점으로 보고합니다.

Security Command Center 정보

Security Command Center는 Google Cloud의 중앙 집중식 취약점 및 위협 보고 서비스입니다. Security Command Center를 사용하면 잘못된 구성, 취약점, 관찰, 위협을 식별하여 보안 상황을 강화할 수 있습니다. 또한 발견 항목을 조사하고 해결할 수 있는 권장사항도 제공합니다.

환경 변수에서 보안 비밀을 스캔하는 이유

환경 변수가 암호화되지 않으므로 비밀번호와 같은 보안 비밀을 환경 변수에 저장하는 것은 안전하지 않습니다. 이러한 값은 로그와 같은 다양한 시스템에서 수집되고 노출될 수 있습니다. Secret Manager를 사용하여 보안 비밀을 저장하는 것이 좋습니다. 자세한 내용은 Cloud Functions 문서의 보안 비밀 구성을 참조하세요.

작동 방식

보안 비밀 검색을 수행하려면 조직 또는 프로젝트 수준에서 검색 스캔 구성을 만듭니다. 선택한 범위 내에서 Sensitive Data Protection은 빌드 및 런타임 환경 변수의 보안 비밀에 대해 주기적으로 Cloud Functions를 스캔합니다.

환경 변수에 보안 비밀이 있으면 Sensitive Data Protection에서 Secrets in environment variables 취약점 발견 항목을 Security Command Center로 전송합니다. 데이터 프로필은 생성되지 않습니다. 모든 발견 항목은 Security Command Center를 통해서만 제공됩니다.

Sensitive Data Protection은 발견 항목을 함수당 최대 1개까지 생성합니다. 예를 들어 보안 비밀이 동일한 함수의 환경 변수 2개에 있으며 Security Command Center에 발견 항목 하나만 생성됩니다.

Security Command Center에서 다음을 수행하면 Secrets in environment variables 발견 항목을 볼 수 있습니다.

Google Cloud 콘솔의 Security Command Center 발견 항목 목록에 생성된 발견 항목

다음 JSON에서는 Secrets in environment variables 발견 항목의 예시를 보여줍니다. 이 예시에서는 이 특성과 관련된 필드만 표시하고 전체 필드 목록을 제공하지 않습니다.

환경 변수의 보안 비밀

{
  "finding": {
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
    "category": "SECRETS_IN_ENVIRONMENT_VARIABLES",
    "compliances": [
      {
        "standard": "cis",
        "version": "1.3",
        "ids": [
          "1.18"
        ]
      }
    ],
    "createTime": "DATE_TIME",
    "description": "The affected resource is storing credentials or other secret information in its environment variables. This is a security vulnerability because environment variables are stored unencrypted, and accessible to all users who have access to the code.",
    "eventTime": "DATE_TIME",
    "findingClass": "VULNERABILITY",
    "findingProviderId": "organizations/ORGANIZATION_ID/firstPartyFindingProviders/dlp",
    "mute": "MUTE_STATUS",
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "parentDisplayName": "Sensitive Data Protection",
    "resourceName": "//cloudfunctions.googleapis.com/projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID",
  },
  "resource": {
    "name": "//cloudfunctions.googleapis.com/projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID",
    "display_name": "projects/PROJECT_ID/locations/REGION/functions/FUNCTION_ID",
    "type": "google.cloudfunctions.CloudFunction",
    "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "project_display_name": "PROJECT_DISPLAY_NAME",
    "parent_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "parent_display_name": "PARENT_DISPLAY_NAME"
  }
}
    

발견 항목 생성 지연 시간

Sensitive Data Protection에서 보안 비밀 검색을 사용 설정한 후 환경 변수의 초기 스캔이 완료될 때까지 최대 12시간이 걸릴 수 있습니다. 이후 Sensitive Data Protection은 24시간마다 환경 변수를 스캔합니다. 실제로는 스캔이 이보다 더 자주 실행될 수 있습니다.

보고된 보안 비밀 유형

보안 비밀의 예시로는 비밀번호, 인증 토큰, Google Cloud 사용자 인증 정보가 포함됩니다. Sensitive Data Protection에서 이 기능으로 스캔하는 보안 비밀 유형의 전체 목록은 사용자 인증 정보 및 보안 비밀을 참조하세요.

지원되는 리소스

Sensitive Data Protection은 보안 비밀 검색에 Cloud Functions(1세대 및 2세대)를 지원합니다.

가격 책정

이 기능에는 Sensitive Data Protection 요금이 청구되지 않습니다. 서비스 등급(스탠더드 또는 프리미엄)에 따라 Security Command Center 요금이 적용될 수 있습니다. Sensitive Data Protection은 스탠더드 등급과 프리미엄 등급 모두에서 Security Command Center와 함께 작동합니다.

데이터 상주

스캔 구성을 처음 만들 때는 Sensitive Data Protection을 저장할 위치를 지정합니다. 이후에 만드는 모든 스캔 구성은 같은 리전에 저장됩니다. Sensitive Data Protection은 Cloud Functions 메타데이터를 스캔 구성이 저장된 리전으로 내보내지만 함수 자체를 내보내지 않습니다.

Sensitive Data Protection에서 환경 변수의 보안 비밀을 감지하면 발견 항목이 Security Command Center로 전송되고 데이터 처리 프로세스가 적용됩니다.

필요한 IAM 역할

보안 비밀 검색을 수행하려면 데이터를 프로파일링하는 데 필요한 Identity and Access Management 역할이 필요합니다.

또한 Security Command Center 발견 항목을 사용하려면 적절한 역할이 필요합니다. 자세한 내용은 Security Command Center 문서의 조직 수준 활성화를 위한 IAM을 참조하세요.

시작하기 전에

  1. 조직의 Security Command Center 활성화 수준을 확인합니다. 데이터 프로필을 Security Command Center로 전송하려면 스탠더드 또는 프리미엄 등급의 조직 수준에서 Security Command Center를 활성화해야 합니다. 자세한 내용은 조직에 Security Command Center 활성화를 참조하세요.

    Security Command Center가 프로젝트 수준에서만 활성화된 경우 Sensitive Data Protection 발견 항목의 결과가 Security Command Center에 표시되지 않습니다.

  2. Security Command Center에서 Sensitive Data Protection이 통합 서비스로 사용 설정되어 있는지 확인합니다. 자세한 내용은 Google Cloud 통합 서비스 추가를 참조하세요.

조직 수준에서 보안 비밀 검색 구성

전체 조직에서 보안 비밀 검색을 사용 설정하려면 다음 단계를 수행합니다. 프로젝트 수준 검색은 프로젝트 수준에서 보안 비밀 검색 구성을 참조하세요.

조직 관리자(roles/resourcemanager.organizationAdmin) 또는 보안 관리자(roles/iam.securityAdmin) 역할이 없어도 스캔 구성을 만들 수 있습니다. 그러나 스캔 구성을 만든 후 해당 역할 중 하나가 있는 다른 사람이 서비스 에이전트에 검색 액세스 권한을 부여해야 합니다.

  1. 스캔 구성 만들기 페이지로 이동합니다.

    스캔 구성 만들기로 이동

  2. 조직으로 이동합니다. 툴바에서 프로젝트 선택기를 클릭하고 조직을 선택합니다.

    이 페이지의 각 단계를 완료한 후 계속을 클릭합니다.

  3. 검색 유형 선택보안 비밀/사용자 인증 정보 취약점을 선택합니다.

  4. 범위 선택에서 전체 조직 스캔 여부를 선택합니다.

  5. 서비스 에이전트 컨테이너 및 결제 관리에서 서비스 에이전트 컨테이너로 사용할 프로젝트를 지정합니다. Sensitive Data Protection에서 새 프로젝트를 자동으로 만들도록 하거나 개발자가 기존 프로젝트를 선택할 수 있습니다.

    • 서비스 에이전트 컨테이너로 사용할 프로젝트가 없으면 새 프로젝트를 서비스 에이전트 컨테이너로 만들기를 선택합니다. Sensitive Data Protection에서 DLP 서비스 에이전트 컨테이너라는 새 프로젝트를 만듭니다. 이 프로젝트 내 서비스 에이전트는 Sensitive Data Protection 및 기타 API에 인증하는 데 사용됩니다. 시스템은 검색과 관련이 없는 작업을 포함하여 이 프로젝트와 관련된 모든 청구 가능 작업의 요금이 청구될 계정을 선택하라는 메시지를 표시합니다.

      프로젝트를 만드는 데 필요한 권한이 없으면 새 프로젝트를 서비스 에이전트 컨테이너로 만들기 옵션이 중지됩니다. 이 경우 기존 프로젝트를 선택하거나 Google Cloud 관리자에게 프로젝트 생성자(roles/resourcemanager.projectCreator) 역할을 부여해 달라고 요청해야 합니다.

    • 재사용하려는 기존 서비스 에이전트 컨테이너가 있으면 기존 서비스 에이전트 컨테이너 선택을 선택합니다. 그런 다음 찾아보기를 클릭하여 서비스 에이전트 컨테이너의 프로젝트 ID를 선택합니다.

  6. 구성을 저장할 위치 설정에 이 스캔 구성을 저장할 리전을 선택합니다. 나중에 만드는 모든 스캔 구성도 이 위치에 저장됩니다. 데이터 상주 고려사항에 대한 자세한 내용은 이 페이지의 데이터 상주를 참조하세요.

  7. 선택사항: 스캔 구성을 만든 직후에 스캔을 시작하지 않으려면 일시중지 모드에서 스캔 만들기를 선택합니다.

    이 옵션은 다음과 같은 경우에 유용합니다.

    • 여전히 Google Cloud 관리자가 서비스 에이전트에 검색 액세스 권한을 부여해야 하는 경우
    • 여러 스캔 구성을 만들고 일부 구성이 다른 구성을 재정의하려고 하는 경우.
  8. 만들기를 클릭합니다.

Sensitive Data Protection은 스캔 구성을 만들거나 일시중지된 구성을 다시 시작한 직후에 Cloud Functions 환경 변수 스캔을 시작합니다. 발견 항목이 Security Command Center에 표시되는 데 걸리는 시간에 대한 자세한 내용은 이 페이지의 발견 항목 생성 지연 시간을 참조하세요.

조직 관리자(roles/resourcemanager.organizationAdmin) 또는 보안 관리자(roles/iam.securityAdmin) 역할이 없는 경우 검색을 시작하려면 먼저 이러한 역할 중 하나가 있는 다른 사람이 서비스 에이전트에 검색 액세스 권한을 부여해야 합니다.

프로젝트 수준에서 보안 비밀 검색 구성

단일 프로젝트에 대해 보안 비밀 검색을 사용 설정하려면 다음 단계를 수행합니다. 조직 수준 검색은 조직 수준에서 보안 비밀 검색 구성을 참조하세요.

  1. 스캔 구성 만들기 페이지로 이동합니다.

    스캔 구성 만들기로 이동

  2. 프로젝트로 이동합니다. 툴바에서 프로젝트 선택기를 클릭하고 프로젝트를 선택합니다.

    이 페이지의 각 단계를 완료한 후 계속을 클릭합니다.

  3. 검색 유형 선택보안 비밀/사용자 인증 정보 취약점을 선택합니다.

  4. 범위 선택전체 프로젝트 스캔이 선택되었는지 확인합니다. 선택되지 않았으면 프로젝트 뷰인지 확인합니다.

  5. 구성을 저장할 위치 설정에 이 스캔 구성을 저장할 리전을 선택합니다. 나중에 만드는 모든 스캔 구성도 이 위치에 저장됩니다. 데이터 상주 고려사항에 대한 자세한 내용은 이 페이지의 데이터 상주를 참조하세요.

  6. 만들기를 클릭합니다.

Sensitive Data Protection은 스캔 구성을 만들거나 일시중지된 구성을 다시 시작한 직후에 Cloud Functions 환경 변수 스캔을 시작합니다. 발견 항목이 Security Command Center에 표시되는 데 걸리는 시간에 대한 자세한 내용은 이 페이지의 발견 항목 생성 지연 시간을 참조하세요.

Secrets in environment variables 발견 항목 쿼리

다음은 Security Command Center에서 Secrets in environment variables 발견 항목을 찾는 데 사용할 수 있는 쿼리 예시입니다. 쿼리 편집기 필드에 이러한 쿼리를 입력할 수 있습니다. 쿼리 편집기에 대한 자세한 내용은 Security Command Center 대시보드에서 발견 항목 쿼리 수정을 참조하세요.

모든 Secrets in environment variables 발견 항목 나열

state="ACTIVE"
AND NOT mute="MUTED"
AND category="SECRETS_IN_ENVIRONMENT_VARIABLES"

특정 프로젝트의 모든 Secrets in environment variables 발견 항목 나열

state="ACTIVE"
AND NOT mute="MUTED"
AND category="SECRETS_IN_ENVIRONMENT_VARIABLES"
AND resource.project_name="//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"

다음을 바꿉니다.

  • PROJECT_NUMBER: 쿼리하려는 프로젝트의 숫자 ID