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