説明
セキュリティグループで広いCIDR範囲を許可すると、サービスやデータベースに接続する必要がないシステムまで含まれる可能性があります。公開ネットワークだけでなく、内部ネットワークでも業務上必要な送信元に限定してください。
適切なアクセス範囲はプレフィックス長だけでは判断できません。実際のクライアント、プロトコル、ポート、接続経路を併せて確認する必要があります。ネットワーク接続が許可されても、データベースの認証と権限は別途適用されます。
想定される影響
- 接続可能なシステムが増え、不要な接続試行や脆弱性を悪用する機会が増える可能性があります。
- 許可範囲内のシステムが侵害されると、そこを経由した内部への接続試行が可能になります。
対処方法
- EC2の
CidrIp・CidrIpv6を必要なアドレスに絞り、ポートとプロトコルも制限してください。対応する接続では、アプリケーションのセキュリティグループの参照を検討してください。 - 従来のRDS DBセキュリティグループの
CIDRIPも、実際のクライアントに基づいて見直してください。現在のVPC内のRDSにはVPCセキュリティグループを使用してください。 - 変更前に必要な通信を確認し、変更後は承認されたクライアントが接続でき、それ以外の接続が拒否されることをテストしてください。
例
VPCセキュリティグループを使うMySQLの例です。同じVPC内のDBサブネットグループ、対応するDBインスタンスクラス、管理者名を指定してください。パスワードはRDSがSecrets Managerで管理します。例のアドレスは実際に承認されたクライアントのアドレスに置き換えてください。
変更前
yaml
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
DBSubnetGroupName:
Type: String
DBInstanceClass:
Type: String
MasterUsername:
Type: String
Resources:
DBinstance1:
Type: AWS::RDS::DBInstance
Properties:
VPCSecurityGroups:
- Ref: DbSecurity
AllocatedStorage: "20"
DBInstanceClass: !Ref DBInstanceClass
DBSubnetGroupName: !Ref DBSubnetGroupName
Engine: mysql
MasterUsername: !Ref MasterUsername
ManageMasterUserPassword: true
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
DbSecurity:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: MySQL access
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 3306
ToPort: 3306
CidrIp: 10.0.0.0/23
内部の/23範囲からMySQLポート3306への接続を許可します。その範囲のすべてのアドレスにアクセスが必要か確認してください。
変更後
yaml
Parameters:
VpcId:
Type: AWS::EC2::VPC::Id
DBSubnetGroupName:
Type: String
DBInstanceClass:
Type: String
MasterUsername:
Type: String
Resources:
DBinstance1:
Type: AWS::RDS::DBInstance
Properties:
VPCSecurityGroups:
- Ref: DbSecurity
AllocatedStorage: "20"
DBInstanceClass: !Ref DBInstanceClass
DBSubnetGroupName: !Ref DBSubnetGroupName
Engine: mysql
MasterUsername: !Ref MasterUsername
ManageMasterUserPassword: true
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
DbSecurity:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: MySQL access
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 3306
ToPort: 3306
CidrIp: 10.0.1.10/32
単一のIPv4アドレスに限定します。そのアドレスが承認されたクライアントの実際のアドレスであることを確認し、他の関連付けられたセキュリティグループの追加許可も確認してください。