코드 보안을 위해 Assured OSS와 통합

Assured 오픈소스 소프트웨어(Assured OSS)를 사용하면 Google에서 자체 개발자 워크플로에 사용하는 OSS 패키지를 사용하여 코드 보안을 강화할 수 있습니다. Assured OSS를 사용하면 개발자가 Google이 자체 오픈소스 종속 항목을 보호하기 위해 적용하는 보안 전문 지식과 경험을 활용할 수 있습니다.

Assured OSS를 Security Command Center와 통합할 때 다음을 수행할 수 있습니다.

  • TensorFlow, Pandas, Scikit-learn과 같은 일반적인 머신러닝 및 인공지능 프로젝트를 포함하여 3,700개 이상의 선별되고 가장 많이 사용되는 Java 및 Python 패키지 중에서 선택합니다.
  • Assured OSS 증명이 포함된 모든 Java, Python, JavaScript 패키지를 다운로드하도록 보안 프록시를 구성하여 Google을 신뢰할 수 있는 알려진 공급업체로 만듭니다.
  • SPDX 및 CycloneDX와 같은 업계 표준 형식으로 제공되는 Assured OSS의 SBOM과 VEX를 사용하여 재료에 대해 자세히 알아봅니다.
  • Google에서 제공하는 서명된 조작 방지 출처를 통해 사용 중인 패키지의 무결성에 대한 신뢰도를 높입니다.
  • Google에서 선별된 패키지에서 새로운 취약점을 적극적으로 스캔, 발견, 수정하여 보안 위험을 줄입니다.

시작하기 전에

이 페이지의 남은 태스크를 수행하기 전에 먼저 다음 태스크를 수행하세요.

Security Command Center Enterprise 등급 활성화

Security Command Center Enterprise 등급이 조직 수준에서 활성화되었고 설정 가이드의 처음 6단계를 완료했는지 확인합니다.

조직 수준에서 권한 설정

조직 수준 및 프로젝트 수준에서 권한을 설정해야 합니다.

  1. 조직에 다음 역할이 있는지 확인합니다. Security Center Admin, Organization Admin

    역할 확인

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 조직을 선택합니다.
    3. 주 구성원 열에서 이메일 주소가 있는 행을 찾습니다.

      이메일 주소가 열에 없으면 역할이 없는 것입니다.

    4. 이메일 주소가 있는 행에 대해 역할 열에서 역할 목록에 필요한 역할이 있는지 확인합니다.

    역할 부여

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 조직을 선택합니다.
    3. 액세스 권한 부여를 클릭합니다.
    4. 새 주 구성원 필드에 이메일 주소를 입력합니다.
    5. 역할 선택 목록에서 역할을 선택합니다.
    6. 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
    7. 저장을 클릭합니다.

프로젝트 수준에서 권한 설정

  1. 프로젝트에 다음 역할이 있는지 확인합니다. Service Usage Admin, Service Account Admin, Project IAM Admin

    역할 확인

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 주 구성원 열에서 이메일 주소가 있는 행을 찾습니다.

      이메일 주소가 열에 없으면 역할이 없는 것입니다.

    4. 이메일 주소가 있는 행에 대해 역할 열에서 역할 목록에 필요한 역할이 있는지 확인합니다.

    역할 부여

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동
    2. 프로젝트를 선택합니다.
    3. 액세스 권한 부여를 클릭합니다.
    4. 새 주 구성원 필드에 이메일 주소를 입력합니다.
    5. 역할 선택 목록에서 역할을 선택합니다.
    6. 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
    7. 저장을 클릭합니다.

Google Cloud CLI 설정

다음 개발 환경 중 하나에서 이 페이지의 gcloud CLI 샘플을 사용할 수 있습니다.

  • Cloud Shell: gcloud CLI가 이미 설정된 온라인 터미널을 사용하려면 Cloud Shell을 활성화하세요.

    이 페이지 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  • 로컬 셸: 로컬 개발 환경에서 gcloud CLI를 사용하려면 gcloud CLI를 설치하고 초기화합니다.

Assured OSS 설정

콘솔

  1. Google Cloud 콘솔에서 Security Command Center 위험 개요 페이지로 이동합니다.

    위험 개요로 이동

  2. 표시된 조직이 Security Command Center Enterprise 등급을 활성화한 조직인지 확인합니다.

  3. 설정 가이드 보기를 클릭합니다.

  4. 코드 보안 설정을 클릭합니다.

  5. 새 서비스 계정을 선택하거나 Assured Open Source Software 권한을 추가할 기존 서비스 계정을 선택합니다.

  6. Assured OSS 리소스를 찾을 Google Cloud 프로젝트를 선택합니다.

  7. Assured OSS 설정을 클릭합니다.

    설정 프로세스는 자동으로 다음을 완료합니다.

    • 이를 선택하면 새 서비스 계정 assuredoss@PROJECT_ID.gservicesaccount.com이 생성됩니다.
    • Assured OSS에 사용할 지정된 서비스 계정에 Assured OSS 사용자 역할을 할당합니다.
    • 계정에서 서비스를 구성할 수 있도록 로그인한 사용자 계정에 Assured OSS 관리자 역할을 할당합니다.
    • Assured Open Source Software API를 사용 설정하고 아직 사용 설정되지 않았으면 Artifact Registry API를 사용 설정합니다.
    • 선택한 프로젝트의 Artifact Registry 인스턴스에서 Assured OSS 프록시 서비스를 설정합니다. 저장소는 각 언어(Java, Python, JavaScript)에 프로비저닝됩니다. 이러한 저장소는 선별된 포트폴리오에서 패키지를 자동으로 가져올 수 있습니다. 선별된 포트폴리오의 일부로 패키지를 사용할 수 없는 경우 저장소는 요청을 표준 저장소로 리디렉션합니다. 프록시 서비스는 미국 리전만 지원합니다.
    • 개발자와 서비스 계정에 Google 소유 프로젝트의 패키지 메타데이터 및 알림에 액세스할 수 있는 권한을 부여합니다.
  8. 지정된 각 Assured OSS 서비스 계정의 서비스 계정 키를 만들고 키를 JSON 형식으로 다운로드합니다.

  9. 로컬 머신의 명령줄에서 다운로드한 키 파일에 다음 명령어를 실행하여 base64 인코딩 문자열을 가져옵니다.

    base64 KEY_FILENAME.json
    

    KEY_FILENAME.json을 다운로드한 서비스 계정 키 이름으로 바꿉니다.

    Assured OSS용 원격 저장소를 설정할 때 base64로 인코딩된 문자열이 필요합니다.

  10. 패키지를 다운로드하려면 Assured OSS에서 각 언어에 프로비저닝하는 엔드포인트를 사용합니다. 나중에 사용할 수 있도록 이 엔드포인트를 기록해 둡니다.

    • Java
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

  11. 다음을 클릭합니다. JFrog Artifactory 또는 Sonatype Nexus와 같은 조직의 아티팩트 저장소 관리자로 Assured OSS를 구성합니다.

gcloud

  1. Assured OSS를 사용 설정하는 데 사용할 사용자 계정을 사용하여 Google Cloud에 인증합니다.

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login
    
  2. Assured OSS 리소스를 찾을 프로젝트를 검색합니다.

    gcloud alpha projects search --query="displayName=PROJECT_NAME"
    

    PROJECT_NAME을 프로젝트 이름으로 바꿉니다.

  3. Assured OSS 리소스를 찾을 프로젝트를 설정합니다.

    gcloud config set project PROJECT_ID
    

    PROJECT_ID를 프로젝트 식별자로 바꿉니다.

  4. 사용자 계정에 역할을 부여하여 Assured OSS를 설정합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/assuredoss.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/serviceusage.serviceUsageAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:[email protected] \
      --role=roles/iam.serviceAccountAdmin
    

    여기서 [email protected]은 사용자 계정의 이메일 주소입니다.

  5. 프로젝트에서 Assured OSS를 사용 설정합니다. Assured OSS를 사용 설정하면 Artifact Registry API도 사용 설정됩니다.

    gcloud services enable assuredoss.googleapis.com
    
  6. 기존 서비스 계정을 사용하는 대신 Assured OSS의 새 서비스 계정을 만들려면 다음을 완료하세요.

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
      --description="Service account for using Assured OSS"
      --display-name="Assured OSS service account"
    

    SERVICE_ACCOUNT_NAME을 서비스 계정의 이름(예: assuredoss)으로 바꿉니다.

  7. Assured OSS의 서비스 계정을 구성합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/assuredoss.user
    

    다음을 바꿉니다.

    • SERVICE_ACCOUNT_NAME: 서비스 계정의 이름(예: assuredoss)
    • PROJECT_ID: 프로젝트 식별자
  8. Assured OSS 저장소를 만들어 Artifact Registry 인스턴스에서 Assured OSS 프록시 서비스를 설정합니다. 모든 언어에 대한 저장소를 만들어야 합니다. 저장소를 프로비저닝하는 Assured OSS 프록시 서비스는 미국 리전만 지원합니다.

    alias gcurlj='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
    

    PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

    이러한 저장소는 선별된 포트폴리오에서 패키지를 자동으로 가져올 수 있습니다. 선별된 포트폴리오의 일부로 패키지를 사용할 수 없는 경우 저장소는 요청을 표준 저장소로 리디렉션합니다.

  9. 각 Assured OSS 서비스 계정의 서비스 계정 키를 만들고 키를 JSON 형식으로 다운로드합니다.

  10. 명령줄에서 다운로드한 키 파일에 다음 명령어를 실행하여 base64 인코딩 문자열을 가져옵니다.

    base64 KEY_FILENAME.json
    

    KEY_FILENAME.json을 다운로드한 서비스 계정 키 이름으로 바꿉니다.

    Assured OSS용 원격 저장소를 설정할 때 base64로 인코딩된 문자열이 필요합니다.

  11. 패키지를 다운로드하려면 각 언어에 대해 Assured OSS에서 프로비저닝된 엔드포인트를 사용합니다. 다음 엔드포인트를 기록해 둡니다.

    • Java
      https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
    • Python
      https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
    • JavaScript:
      https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

    PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

  12. JFrog Artifactory 또는 Sonatype Nexus와 같은 조직의 아티팩트 저장소 관리자로 패키지를 다운로드하려면 Assured OSS를 구성합니다.

  13. 원하는 경우 사용 가능한 Java, Python, JavaScript 패키지를 확인합니다.

    gcloud auth revoke
    gcloud auth application-default revoke
    gcloud auth login --cred-file=KEY_FILENAME.json
    

    KEY_FILENAME.json을 다운로드한 서비스 계정 키 이름으로 바꿉니다.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILENAME.json
    

    KEY_FILENAME.json을 다운로드한 서비스 계정 키 이름으로 바꿉니다.

    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
    

    PROJECT_ID를 Assured OSS를 설정할 때 선택한 프로젝트의 ID로 바꿉니다.

다음 단계