1단계: IAM 역할 IaC 템플릿 다운로드 (API)

클라우드 환경을 생성하기 전에, Snyk이 Amazon Web Services (AWS) 계정의 리소스 구성을 스캔하기 위해 가정할 수 있는 읽기 전용 IAM(Identity and Access Management) 역할을 선언하는 IaC(Infrastructure as Code) 템플릿을 다운로드해야 합니다.

이 IaC 템플릿을 사용하여 2단계: Snyk IAM 역할 생성에서 역할을 프로비저닝합니다.

템플릿 형식은 Terraform HCLarrow-up-right 또는 AWS CloudFormationarrow-up-right 중에서 선택할 수 있습니다. IAM 권한은 둘 다 동일하므로, 가장 익숙한 형식을 선택하십시오.

IaC 템플릿 검색

Snyk API 엔드포인트 클라우드 공급자 권한 생성(Generate Cloud Provider Permissions)arrow-up-right을 사용하여 IaC 템플릿을 검색하려면 Org Admin 역할이 있는 조직 수준 서비스 계정의 API 토큰이 필요합니다.

  1. Snyk 웹 UIarrow-up-right에서 설정(Settings) > 일반(General) > **조직 ID(Organization ID)**로 이동하여 조직 ID를 복사합니다.

  2. 다음 형식으로 Snyk API에 요청을 보냅니다. INPUT-TYPE을 Terraform의 경우 tf로, CloudFormation의 경우 cf로 바꿉니다:

curl -X POST \
'https://api.snyk.io/rest/orgs/YOUR-ORGANIZATION-ID/cloud/permissions?version=2022-12-21~beta' \
-H 'Authorization: token YOUR-API-TOKEN' \
-H 'Content-Type:application/vnd.api+json' -d '{
    "data": {
        "attributes": {
            "type": "INPUT-TYPE",
            "platform": "aws"
        },
        "type": "permissions"
    }
}'
circle-info

위의 예시는 [curl](https://curl.se/)이지만, [Postman](https://www.postman.com/) 또는 [HTTPie](https://httpie.io/)와 같은 다른 API 클라이언트를 사용할 수도 있습니다.

API 응답 이해

응답은 아래와 같은 JSON 문서입니다(길이 때문에 잘림).

Terraform 구성이 포함된 응답 예시:

CloudFormation 템플릿이 포함된 응답 예시:

JSON 이스케이프 해제

위 출력의 data.attributes.data 필드는 IAM 역할 및 정책이 포함된 Terraform 또는 CloudFormation 템플릿을 포함하는 이스케이프된 JSON 문자열입니다.

템플릿을 사용하여 리소스를 프로비저닝하기 전에 JSON 이스케이프를 해제해야 합니다. 이는 다음 방법으로 수행할 수 있습니다:

jq 사용

  1. jqarrow-up-right를 다운로드하여 설치합니다.

  2. 템플릿을 검색하기 위해 API 요청을 제출할 때 명령 끝에 다음을 추가합니다:

    이렇게 하면 적절하게 형식화된 템플릿이 현재 작업 디렉토리의 snyk_iac_template 파일에 배치됩니다.

  3. 파일 이름을 .tf 확장자(Terraform) 또는 .yaml(CloudFormation)으로 변경합니다.

수동으로 콘텐츠 변환

  1. API 응답에서 data.attributes.data의 내용을 복사합니다. 값의 맨 처음과 맨 끝의 이중 따옴표는 제외합니다. data \"aws_iam_policy_document\"(Terraform) 또는 AWSTemplateFormatVersion(CloudFormation)으로 시작하는 긴 문자열이 남게 됩니다.

  2. FreeFormatter.comarrow-up-right과 같은 도구에 문자열을 붙여넣어 JSON 이스케이프를 해제합니다.

  3. 이스케이프 해제된 출력을 새 .tf 파일(Terraform) 또는 .yaml 파일(CloudFormation)로 저장합니다.

선택 사항: IAM 역할 이름 변경

기본적으로 Snyk IAM 역할의 이름은 snyk-cloud-role입니다. 조직에 특정 역할 명명 요구 사항이 있는 경우 Terraform 또는 CloudFormation 템플릿에서 이 이름을 변경할 수 있습니다.

Terraform에서 역할 이름은 19번째 줄에 있습니다:

CloudFormation에서 역할 이름은 7번째 줄에 있습니다:

다음 단계는 무엇입니까?

다음 단계는 다운로드한 템플릿을 사용하여 Snyk에 대한 IAM 역할 및 정책을 생성하는 것입니다.

Last updated