설명
CloudFormation의 AWS::Amplify::App의 AccessToken은 GitHub 저장소 연결을 승인하는 개인용 접근 토큰입니다. 값을 직접 쓰거나 파라미터의 Default에 넣으면 템플릿과 저장소 이력에 인증 정보가 남습니다.
잠재적 영향
템플릿을 읽을 수 있는 사람이 토큰을 얻으면, 토큰에 부여된 권한 범위에서 GitHub 리소스에 접근할 수 있습니다.
해결 방법
실제 GitHub 발급 토큰을 Secrets Manager에 저장하고 동적 참조로 전달하세요. 토큰을 기본값에 두지 말고, 이미 노출된 토큰은 GitHub에서 폐기한 뒤 새 토큰으로 교체하세요.
예시
RepositoryUrl에는 GitHub 저장소 URL을 입력합니다. 변경 후에는 실제 토큰이 token 키에 저장된 기존 Secrets Manager 보안 암호의 이름이나 ARN도 입력합니다. 아래 토큰 문자열은 예시이며, 임의로 생성한 비밀번호는 GitHub 토큰을 대신할 수 없습니다.
변경 전
yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
RepositoryUrl:
Type: String
Resources:
NewAmpApp:
Type: AWS::Amplify::App
Properties:
Name: NewAmpApp
Repository: !Ref RepositoryUrl
AccessToken: ghp_EXAMPLE_NOT_A_REAL_GITHUB_TOKEN
변경 후
yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
RepositoryUrl:
Type: String
MyAmpAppSecretManagerRotater:
Type: String
Resources:
NewAmpApp:
Type: AWS::Amplify::App
Properties:
Name: NewAmpApp
Repository: !Ref RepositoryUrl
AccessToken: !Sub '{{resolve:secretsmanager:${MyAmpAppSecretManagerRotater}:SecretString:token}}'