자격 증명 보안 관리
자동화된 Terraform 파이프라인에서 클라우드 제공업체의 자격 증명과 민감한 데이터를 안전하게 관리하는 모범 사례를 구현합니다.
자격 증명 보안 관리은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
CI/CD에서 자격 증명 보호하기
CI/CD 파이프라인에서 Terraform으로 인프라를 자동화하려면 클라우드 제공업체 계정에 액세스해야 합니다. 무단 액세스와 데이터 유출을 방지하려면 이러한 자격 증명을 안전하게 관리하는 것이 무엇보다 중요합니다.
로봇에게 집 열쇠를 맡기는 상황을 생각해 보십시오. 올바른 로봇만 올바른 열쇠를 가지고, 그 열쇠도 안전하게 보호되도록 해야 합니다.
비밀 정보 하드코딩 피하기
흔히 발생하는 실수는 API 키나 비밀번호 같은 민감한 정보를 Terraform 구성 파일 또는 CI/CD 스크립트에 직접 삽입하는 것입니다. 이를 하드코딩이라고 합니다.
- 보안 위험: 비밀 정보가 소스 코드 기록(예: Git)의 일부가 됩니다.
- 노출: 저장소에 액세스할 수 있는 사람은 누구나 해당 정보를 볼 수 있습니다.
- 유지 관리: 비밀 정보를 변경하려면 코드를 수정하고 다시 배포해야 합니다.
환경 변수(기본)
로컬 개발이나 기본적인 상황에서는 환경 변수를 사용하면 하드코딩 없이 자격 증명을 간단하게 제공할 수 있습니다. Terraform을 실행하기 전에 셸에서 환경 변수를 설정하면 됩니다.
하드코딩보다는 낫지만, 신중하게 처리하지 않으면 비밀 정보가 로그나 프로세스 목록에 여전히 표시될 수 있으므로 공유 CI/CD 파이프라인에는 적합하지 않습니다.
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform planCI/CD 플랫폼의 비밀 정보 관리자
최신 CI/CD 플랫폼은 기본 제공 비밀 정보 관리 기능을 제공합니다. 이를 사용하면 코드 저장소와 분리된 상태로 플랫폼 자체에 민감한 데이터를 안전하게 저장할 수 있습니다.
파이프라인이 실행되면 이러한 비밀 정보가 환경 변수 또는 파일로 빌드 환경에 주입되지만, 로그에 노출되거나 저장소에 저장되지는 않습니다.
GitHub Actions 비밀 정보 예
GitHub Actions는 저장소 비밀 정보를 위한 전용 섹션을 제공합니다. Settings > Secrets and variables > Actions > New repository secret에서 비밀 정보를 추가할 수 있습니다.
그런 다음 작업 흐름 파일에서 secrets 컨텍스트를 사용하여 이러한 비밀 정보를 참조할 수 있습니다. 비밀 정보는 로그에서 자동으로 마스킹됩니다.
name: Deploy Infra
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Terraform Init
run: terraform init파이프라인을 위한 클라우드 IAM 역할
CI/CD 인증에 가장 안전한 방법은 클라우드 제공업체가 제공하는 Identity and Access Management(IAM) 역할 또는 서비스 계정을 사용하는 것입니다.
수명이 긴 액세스 키를 사용하는 대신 CI/CD 파이프라인이 특정 권한을 가진 임시 역할을 수임합니다. 이때 신뢰 관계에는 OpenID Connect (OIDC)를 활용하는 경우가 많습니다. 따라서 정적 자격 증명을 저장할 필요가 완전히 사라집니다.
AWS IAM 역할 + OIDC 예
AWS에서는 GitHub Actions 작업 흐름이 OIDC를 사용하여 직접 수임할 수 있는 IAM 역할을 구성할 수 있습니다. 따라서 AWS 액세스 키를 어디에도 저장하지 않아도 됩니다!
역할에 대한 신뢰 정책을 정의하고, 특정 조건(예: 저장소와 브랜치)에 따라 GitHub의 OIDC 제공업체가 해당 역할을 수임하도록 허용합니다.
resource "aws_iam_role" "github_actions_role" {
name = "github-actions-oidc-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Principal = {
Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
}
Action = "sts:AssumeRoleWithWebIdentity"
Condition = {
StringEquals = {
"token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
}
StringLike = {
"token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
}
}
}
]
})
}Terraform 민감한 출력
Terraform 출력에 데이터베이스 비밀번호나 개인 키 같은 민감한 데이터가 포함되는 경우가 있습니다. 이러한 출력은 sensitive로 표시해야 합니다.
출력을 민감한 것으로 표시하면 Terraform은 CLI 출력과 상태 파일에 값이 표시될 때 해당 값을 가립니다. 이를 통해 실수로 정보가 노출되는 것을 방지할 수 있습니다.
output "database_password" {
value = aws_db_instance.main.password
description = "The database root password."
sensitive = true
}자격 증명 보안 확인
수명이 긴 정적 자격 증명을 저장할 필요 없이 CI/CD 파이프라인에서 클라우드 제공업체를 인증하는 데 일반적으로 가장 안전한 방법은 무엇입니까?
복습: 자격 증명 보호
Terraform CI/CD 파이프라인에서 민감한 데이터를 관리하는 데 필요한 핵심 전략을 학습하셨습니다.
- 하드코딩 피하기: 코드에 비밀 정보를 직접 삽입하지 마십시오.
- CI/CD 비밀 정보 활용: 정적 자격 증명에는 플랫폼별 비밀 정보 관리자를 사용하십시오.
- IAM 역할/OIDC 활용: 최고의 보안을 위해 클라우드 제공업체의 IAM 역할과 OIDC를 사용하여 키를 저장하지 않고 임시 권한을 수임하십시오.
- 민감한 출력 표시: Terraform 출력으로 노출되는 민감한 데이터를 보호하십시오.
이러한 방식은 견고하고 안전한 인프라를 유지하는 데 필수적입니다.
자주 묻는 질문
“자격 증명 보안 관리” 강의는 무료인가요?
네 — “자격 증명 보안 관리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“자격 증명 보안 관리”에서 뭘 배우나요?
자동화된 Terraform 파이프라인에서 클라우드 제공업체의 자격 증명과 민감한 데이터를 안전하게 관리하는 모범 사례를 구현합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“자격 증명 보안 관리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.