Directory Service Simple AD の平文パスワード

Simple AD の管理者パスワードをテンプレートやパラメータの既定値に保存しないでください。

説明

CloudFormation の AWS::DirectoryService::SimpleAD で Password を直接記述したり、パラメータの Default に設定したりすると、ディレクトリ管理者のパスワードがコードや履歴に残ります。

想定される影響

ディレクトリに接続できる人が流出したパスワードを取得すると、Administrator アカウントでユーザーやグループなどのディレクトリリソースを変更するおそれがあります。

対処方法

既定値を設定せず、安全なデプロイ手順でパスワードを渡してください。パラメータには NoEcho: true を設定し、出力やメタデータにパスワードを記録しないでください。既存のパスワードが露出した場合は ResetUserPassword でリセットしてください。CloudFormation の Password を変更するとディレクトリが置き換えられるため、ローテーションには使わないでください。

例

VPC の ID と、その VPC 内の異なるアベイラビリティーゾーンにある二つのサブネットを指定します。変更前のパスワードは例示用です。変更後は、ディレクトリのパスワードポリシーを満たす値を ParentMasterPassword に安全に渡します。

変更前

yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  VpcId:
    Type: AWS::EC2::VPC::Id
  DirectorySubnets:
    Type: List<AWS::EC2::Subnet::Id>
Resources:
  NewAmpApp1:
    Type: AWS::DirectoryService::SimpleAD
    Properties:
      Name: corp.example.com
      Password: "asDjskjs73!!"
      ShortName: CORP
      Size: Small
      VpcSettings:
        VpcId: !Ref VpcId
        SubnetIds: !Ref DirectorySubnets

変更後

yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  ParentMasterPassword:
    Type: String
    NoEcho: true
    MinLength: 8
    MaxLength: 64
  VpcId:
    Type: AWS::EC2::VPC::Id
  DirectorySubnets:
    Type: List<AWS::EC2::Subnet::Id>
Resources:
  NewAmpApp1:
    Type: AWS::DirectoryService::SimpleAD
    Properties:
      Name: corp.example.com
      Password: !Ref ParentMasterPassword
      ShortName: CORP
      Size: Small
      VpcSettings:
        VpcId: !Ref VpcId
        SubnetIds: !Ref DirectorySubnets

参考資料