説明
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}}'