설명
CloudFormation의 AWS::DirectoryService::SimpleAD에서 Password를 직접 쓰거나 파라미터의 Default에 넣으면 디렉터리 관리자 비밀번호가 코드와 이력에 남습니다.
잠재적 영향
디렉터리에 연결할 수 있는 사람이 유출된 비밀번호를 얻으면 Administrator 계정으로 사용자와 그룹 등 디렉터리 리소스를 변경할 수 있습니다.
해결 방법
비밀번호를 기본값 없이 안전한 배포 경로로 전달하세요. 파라미터에는 NoEcho: true를 설정하고 출력이나 메타데이터에 비밀번호를 기록하지 마세요. 기존 비밀번호가 노출됐다면 ResetUserPassword로 재설정하세요. CloudFormation의 Password 변경은 디렉터리 교체를 일으키므로 비밀번호 교체 수단으로 사용하지 마세요.
예시
같은 VPC의 서로 다른 가용 영역에 있는 두 서브넷과 VPC ID를 입력합니다. 변경 전 비밀번호는 예시입니다. 변경 후에는 디렉터리 비밀번호 정책을 충족하는 값을 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