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