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