-
Notifications
You must be signed in to change notification settings - Fork 1
[FIX] #70: 백슬래시 뒤 공백 제거 #187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Walkthrough배포 워크플로우 파일(.github/workflows/deploy-dev.yml)에서 CodeDeploy 단계의 줄 계속 기호(백슬래시) 뒤 공백을 제거해, 백슬래시가 줄의 마지막 문자가 되도록 정리했습니다. 명령과 인자는 변경되지 않았습니다. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
|
CI status |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/deploy-dev.yml (1)
35-56: 심각: 민감정보(.env) 아티팩트 포함 및 S3 업로드는 보안 위험현재
.env에 아래와 같은 고감도 비밀이 기록되고, 이후deploy.zip에 포함되어 S3로 업로드됩니다.
- DB 자격증명, OAuth 클라이언트 시크릿, Gmail 비밀번호
- 특히 AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY (클라우드 계정 전체 접근 위험)
이 경로는 아티팩트/버킷/배포 대상 인스턴스에서 유출 표면이 크게 늘어납니다. 최소한 다음을 권고합니다(선호 순):
- 최선: .env에 비밀을 넣지 말고, 배포 대상(EC2/ECS)에서 인스턴스/태스크 역할(IAM Role)로 SSM Parameter Store 또는 Secrets Manager에서 런타임 조회.
- 임시 완화: .env에서 AWS 키를 제거하고, S3 업로드에 KMS 암호화를 강제. 버킷 정책으로 원천 접근도 엄격 제한.
즉시 반영 가능한 “임시 완화” 예시는 아래와 같습니다.
- name: Create Deployment Package run: | echo "DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}" > .env echo "DB_HOST=${{ secrets.DB_HOST }}" >> .env echo "DB_PORT=${{ secrets.DB_PORT }}" >> .env echo "DB_NAME_DEV=${{ secrets.DB_NAME_DEV }}" >> .env echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" >> .env echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env echo "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" >> .env echo "GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" >> .env echo "GOOGLE_REDIRECT_URI=${{ secrets.GOOGLE_REDIRECT_URI }}" >> .env echo "GOOGLE_ISSUER=${{secrets.GOOGLE_ISSUER}}" >> .env echo "SELF_ISSUER=${{secrets.SELF_ISSUER}}" >> .env echo "SECRET_KEY=${{secrets.SECRET_KEY}}" >> .env - echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> .env - echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> .env - echo "AWS_REGION=${{ secrets.AWS_REGION }}" >> .env + # AWS 자격증명은 절대 .env로 배포하지 마세요. (인스턴스/태스크 역할 + SSM/Secrets로 대체) echo "AWS_RESOURCE_BUCKET=${{secrets.AWS_RESOURCE_BUCKET}}" >> .env echo "AWS_TEST_RESOURCE_BUCKET=${{secrets.AWS_TEST_RESOURCE_BUCKET}}" >> .env echo "GMAIL=${{secrets.GMAIL}}" >> .env echo "GMAIL_PASSWORD=${{secrets.GMAIL_PASSWORD}}" >> .env echo "DOZZLE_USERNAME=${{ secrets.DOZZLE_USERNAME }}" >> .env echo "DOZZLE_PASSWORD=${{ secrets.DOZZLE_PASSWORD }}" >> .env zip -r deploy.zip .env docker-compose-dev.yml deploy.dev.sh appspec.yml또한 S3 업로드 시 KMS 암호화를 강제하여(임시 방편) 전송/저장 시 보호를 강화하세요.
- aws s3 cp deploy.zip s3://${{ secrets.AWS_S3_BUCKET }}/deploy-dev.zip + aws s3 cp deploy.zip s3://${{ secrets.AWS_S3_BUCKET }}/deploy-dev.zip \ + --sse aws:kms --sse-kms-key-id ${{ secrets.KMS_KEY_ID }}장기적으로는 .env 자체를 아티팩트에서 제거하고,
deploy.dev.sh내에서 SSM/Secrets 조회 로직으로 대체하는 구조를 권장합니다. 필요하시면 해당 리팩터링 가이드와 패치도 제공하겠습니다.Also applies to: 57-57
🧹 Nitpick comments (3)
.github/workflows/deploy-dev.yml (3)
59-64: GitHub OIDC로 자격증명 구성 전환 권장
aws configure set ...로 정적 키를 주입하는 대신,aws-actions/configure-aws-credentials@v4+ GitHub OIDC + IAM Role을 사용하면 키 무배포(키리스)로 보안성이 크게 향상됩니다. 예시:- - name: Configure AWS credentials - run: | - aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} - aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws configure set region ${{ secrets.AWS_REGION }} + - name: Configure AWS credentials (OIDC) + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_OIDC_ROLE }} + aws-region: ${{ secrets.AWS_REGION }}사전 준비: AWS 계정에 GitHub OIDC 프로바이더 및 신뢰 정책이 설정되어 있어야 합니다.
71-74: 인자 값은 따옴표로 감싸 안전한 파싱 보장애플리케이션/그룹/버킷/키 값에 공백·특수문자가 섞일 가능성에 대비해 값을 인용(quoting)하는 편이 안전합니다.
aws deploy create-deployment \ - --application-name ${{ secrets.AWS_CODEDEPLOY_APP }} \ - --deployment-group-name ${{ secrets.AWS_CODEDEPLOY_GROUP_DEV }} \ - --s3-location bucket=${{ secrets.AWS_S3_BUCKET }},bundleType=zip,key=deploy-dev.zip + --application-name "${{ secrets.AWS_CODEDEPLOY_APP }}" \ + --deployment-group-name "${{ secrets.AWS_CODEDEPLOY_GROUP_DEV }}" \ + --s3-location "bucket=${{ secrets.AWS_S3_BUCKET }},bundleType=zip,key=deploy-dev.zip"
34-58: 셸 안전성 강화: ‘set -Eeuo pipefail’ 추가 제안멀티라인 셸 스크립트 단계 상단에 다음을 추가하면 조기 실패 감지, 파이프 오류 전파, 미정의 변수 사용 방지를 통해 배포 안정성이 올라갑니다.
- name: Create Deployment Package run: | + set -Eeuo pipefail echo "DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}" > .env ...동일 패턴을 다른 run 블록에도 적용하는 것을 권장합니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
.github/workflows/deploy-dev.yml(1 hunks)
🔇 Additional comments (1)
.github/workflows/deploy-dev.yml (1)
72-72: 백슬래시 뒤 공백 제거 — 셸 라인 계속 오류 해결, LGTM백슬래시는 해당 줄의 마지막 문자여야 하므로(뒤에 공백이 있으면 무시됨) 이번 수정이 정확합니다. 이 변경만으로 CodeDeploy 커맨드 파싱 이슈는 사라질 것으로 보입니다.
📌 연관된 이슈
✨ 작업 내용
백슬래시 뒤에 공백이 있어서 actions 실패...
코드래빗 말을 잘 듣자
💬 리뷰 요구사항(선택)
Summary by CodeRabbit