본문 바로가기

퍼블릭 클라우드

Packer를 사용하여 AWS 이미지를 빌드할 때 AWS 자격 증명을 제공하는 방법

728x90

Packer를 사용하여 AWS 이미지를 빌드할 때 AWS 자격 증명을 제공하는 방법

정적 자격 증명(static credentials) 및 공유 자격 증명 파일(shared credentials file)을 이용한 방법

Static Credentials (정적 자격 증명)

  • 정적 자격 증명은 Packer 설정 파일에 직접 키 값을 넣어두는 방식입니다.
  • AWS 액세스 키와 시크릿 키를 직접 설정합니다.
vim aws.pkr.hcl
packer {
  required_plugins {
    amazon = {
      version = ">= 1.1.1"
      source  = "github.com/hashicorp/amazon"
    }
  }
}

locals {
  timestamp = regex_replace(timestamp(), "[- TZ:]", "")
}

variable "aws_access_key" {
  type    = string
  default = "aws_access_key"
}

variable "aws_secret_key" {
  type    = string
  default = "aws_secret_key"
}
...
source "amazon-ebs" "ubuntu" {
  access_key            = var.aws_access_key
  secret_key            = var.aws_secret_key
  region                = var.aws_region
  instance_type         = var.aws_instance_type
...
packer validate aws.pkr.hcl
packer build -var="ami_dist=ubuntu" aws.pkr.hcl

이 방법은 편리하지만, Packer 설정 파일에 자격 증명이 노출되기 때문에 보안상 취약할 수 있습니다. 따라서 민감한 정보를 설정할 때는 주의해야 합니다.

Shared Credentials file (공유 자격 증명 파일)

  • 공유 자격 증명 파일은 AWS CLI와 호환되는 ~/.aws/credentials와 유사한 형태로 자격 증명 정보를 관리합니다.
  • 해당 파일을 설정하여 Packer가 사용할 수 있습니다.
vim aws.pkr.hcl
packer {
  required_plugins {
    amazon = {
      version = ">= 1.1.1"
      source  = "github.com/hashicorp/amazon"
    }
  }
}

locals {
  timestamp = regex_replace(timestamp(), "[- TZ:]", "")
}

variable "aws_profile" {
  type        = string
  description = "AWS profile to use. Typically found in ~/.aws/credentials"
  default     = "default"
}
...
source "amazon-ebs" "ubuntu" {
  profile               = var.aws_profile
  region                = var.aws_region
  instance_type         = var.aws_instance_type
...

/path/to/credentials/file 경로에는 AWS access key와 secret key가 포함된 파일이 있어야 합니다.

vim .pkrvars.hcl
aws_access_key = "AXXXXXXXXXXXXXXXXXXXB"
aws_secret_key = "WXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZ"
packer validate aws.pkr.hcl
packer build -var="ami_dist=ubuntu" -var-file=".pkrvars.hcl" aws.pkr.hcl

 

두 가지 방법 중 어떤 것을 선택할지는 사용 사례와 보안 정책에 따라 다를 수 있습니다. 가능하면 정적 자격 증명을 설정하는 대신 공유 자격 증명 파일을 사용하여 민감한 정보를 안전하게 관리하는 것이 좋습니다.

 

참고URL

- Amazon AMI Builder : https://developer.hashicorp.com/packer/plugins/builders/amazon

 

728x90