VPCs should be configured with an interface endpoint for Docker Registry
Checks that each VPC with EC2 instances has an interface endpoint for the Amazon ECR Docker registry (com.amazonaws.<region>.ecr.dkr, or its FIPS name), so image pushes and pulls stay on the AWS network. Only the endpoint's existence and state are read, not its subnets, security groups or DNS. A VPC shared in from another account is its owner's to fix; suppress the finding here.
- service
- EC2
- severity
- Medium
- scope
- evaluated in every region
How to fix it
- Can break clients: With Enable DNS name on, the VPC's existing calls to this service go through the endpoint, so any caller its security groups do not admit on port 443 loses access.
In the console
VPC → Endpoints → Create endpoint
- Type
- AWS services
- Service name
- com.amazonaws.<region>.ecr.dkr
- VPC
- This VPC
- Enable DNS name
- Selected (the default), so software uses it unchanged; the VPC needs DNS hostnames and DNS resolution on
- Subnets
- One in each Availability Zone the instances run in
- Security groups
- One allowing inbound HTTPS (443) from the instances, or no call reaches the endpoint
With the AWS CLI
aws ec2 create-vpc-endpoint --vpc-id <vpc-id> --vpc-endpoint-type Interface --service-name com.amazonaws.<region>.ecr.dkr --subnet-ids <subnet-id> --security-group-ids <security-group-id> --private-dns-enabled --region <region>With Terraform
resource "aws_vpc_endpoint" "this" {
vpc_id = var.vpc_id
service_name = "com.amazonaws.${var.region}.ecr.dkr"
vpc_endpoint_type = "Interface"
subnet_ids = var.subnet_ids
security_group_ids = var.security_group_ids
private_dns_enabled = true
}
See which of your accounts this check is failing on.
Book a live scan