MFA 정책으로 인한 배포 불가
Error
UnauthorizedOperation - SCP 권한 없음
Cause
리소스에 접근하기 전 Organizations SCP 정책인 MFA 인증을 받아야 하나, sts 토큰 인증을 받지 못하여 발생하는 문제
Solve
토큰을 받아 설정하는 방식이 2 가지 (수동과 자동) 있다.
필자는 자동을 권고한다. 이 글은 자동으로 쉘 스크립트를 작성하여 토큰을 받아 설정하였다.
물론 토큰은 12시간동안만 유효하다.
(수동)
aws cli로 sts session token 발급하여 환경 변수 또는 aws configure에 등록 후 provider에 경로 지정
aws sts get-session-token --profile default --serial-number ${mfa_arn} --token-code {mfa_token_code}
현재 사용 중인 IAM 사용자/역할 확인
$ aws sts get-caller-identity
명령어 예시
aws sts get-session-token --profile default --serial-number arn:aws:iam::123456789:mfa/jiho --token-code 197692
(자동)
자동으로 환경 변수로 sts 값을 설정해주는 쉘 스크립트를 작성
1. 쉘 스크립트 작성
test.ps1
# AWS CLI를 사용하여 STS get-session-token 명령어 실행
$region = "ap-northeast-2"
$mfaSerialNumber = "arn:aws:iam::123456789:mfa/jiho"
# 세션 유지 시간 설정 (최대 12시간 = 43200초)
$durationSeconds = 43200
# MFA 토큰 코드 입력 받기
$mfaTokenCode = Read-Host "Enter your MFA token code"
$sessionTokenOutput = aws sts get-session-token --serial-number $mfaSerialNumber --token-code $mfaTokenCode --duration-seconds $durationSeconds --region $region
# JSON 형식의 결과를 파싱하여 객체로 변환
$jsonObject = $sessionTokenOutput|ConvertFrom-Json
# 필요한 인증 정보를 가져옴
$AccessKeyId = $jsonObject.Credentials.AccessKeyId
$SecretAccessKey = $jsonObject.Credentials.SecretAccessKey
$SessionToken = $jsonObject.Credentials.SessionToken
# 중간값 출력
Write-Host "AccessKeyId: $AccessKeyId"
Write-Host "SecretAccessKey: $SecretAccessKey"
Write-Host "SessionToken: $SessionToken"
# 환경 변수로 등록
$env:AWS_ACCESS_KEY_ID = $AccessKeyId
$env:AWS_SECRET_ACCESS_KEY = $SecretAccessKey
$env:AWS_SESSION_TOKEN = $SessionToken
if ($env:AWS_ACCESS_KEY_ID -and $env:AWS_SECRET_ACCESS_KEY -and $env:AWS_SESSION_TOKEN) {
Write-Host "AWS authentication key has been successfully registered as environment variables."
} else {
Write-Host "There was an issue registering AWS authentication key as environment variables." -ForegroundColor Red
}
내 MFA 기기 이름을 mfaSerialNumber 변수로 설정해준다. 나머지는 그대로 둔다.
위의 쉘 스크립트는 토큰 인증을 받은 후 ENV 환경변수로 access key, secret key, session token 3개를 자동 등록하는 내용이다.
2. 쉘 스크립트 실행
MFA token은 내 휴대폰 등록된 기기로 확인하여 입력하면 된다.
Result
배포 성공!
EKS Cluster ipv4 cidr 대역 잘못 설정
Error
EKs cluster ipv4 cidr 대역이 타당하지 않음.
Cause
- EKS Cluster CIDR 대역을 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 (RFC 1918 대역)으로 할당하지 않음
- EKS Cluster CIDR 대역은 VPC 대역(10.50.0.0/16)과 겹쳐서는 안됨
Solve
EKS Cluster CIDR 대역을 192.168.0.0/16으로 수정 후 배포하였더니 배포 성공!
Error
Cause
Solve
Error
Cause
Solve
Error
Cause
Solve
Error
Cause
Solve
'AWS > Project' 카테고리의 다른 글
CodeSeries를 활용한 CI/CD 구성 (Backend Pipeline) (0) | 2024.06.28 |
---|---|
CodeSeries를 활용한 CI/CD 구성 (Frontend Pipeline) (0) | 2024.06.28 |
[CI/CD] TroubleShooting (0) | 2024.06.22 |
[CI/CD] 환경 구성 - ECR(Elastic Container Registry) 구성 (0) | 2024.06.22 |
[CI/CD] 환경 구성 - EC2(K8S Master / Worker) 구성 (0) | 2024.06.22 |