Oracle Analytics Cloud instance is deployed within a Virtual Cloud Network or restricts public access to allowed sources
Oracle Analytics Cloud endpoints are evaluated for network exposure. Public endpoints must use restricted allowlists of specific IPs/CIDRs; presence of 0.0.0.0/0 or no allowed sources indicates unrestricted access. Instances using a VCN/private endpoint or public endpoints limited to specific sources align with the intended exposure model.
Risk
Unrestricted OAC endpoints allow Internet-wide access to the login surface, enabling credential stuffing and brute force. Account takeover can expose reports and data sources (confidentiality), permit dashboard/model changes (integrity), and support lateral movement into connected systems.
Run this check with Prowler
Run in Prowler Cloudprowler oraclecloud --checks analytics_instance_access_restrictedRecommendation
Prefer private deployment in a VCN and apply least privilege network access. If public is required, enforce allowlists to specific IPs/CIDRs and never include 0.0.0.0/0. Use private access channels/service gateways, require MFA/SSO, and apply defense in depth (WAF, audit monitoring) to reduce exposure.
Remediation
Terraform
resource "oci_analytics_analytics_instance" "example" {
compartment_id = "<example_resource_id>"
name = "<example_resource_name>"
feature_set = "ENTERPRISE_ANALYTICS"
license_type = "LICENSE_INCLUDED"
idcs_access_token = "<example_resource_id>"
capacity {
capacity_type = "OLPU_COUNT"
capacity_value = 1
}
network_endpoint_details {
network_endpoint_type = "PUBLIC"
whitelisted_ips = ["<example_resource_id>"] # Critical: restrict to specific allowed CIDR; not 0.0.0.0/0
}
}Other
Check Code
"""Check Ensure Oracle Analytics Cloud (OAC) access is restricted to allowed sources or deployed within a Virtual Cloud Network."""
from prowler.lib.check.models import Check, Check_Report_OCI
from prowler.providers.oraclecloud.services.analytics.analytics_client import (
analytics_client,
)
class analytics_instance_access_restricted(Check):
"""Check Ensure Oracle Analytics Cloud (OAC) access is restricted to allowed sources or deployed within a Virtual Cloud Network."""
def execute(self) -> Check_Report_OCI:
"""Execute the analytics_instance_access_restricted check."""
findings = []
for instance in analytics_client.analytics_instances:
report = Check_Report_OCI(
metadata=self.metadata(),
resource=instance,
region=instance.region,
resource_name=instance.name,
resource_id=instance.id,
compartment_id=instance.compartment_id,
)
# Check if instance has PUBLIC network endpoint type
if (
instance.network_endpoint_type
and instance.network_endpoint_type.upper() == "PUBLIC"
):
# Check if whitelisted IPs are configured
if not instance.whitelisted_ips:
report.status = "FAIL"
report.status_extended = f"Analytics instance {instance.name} has public access with no whitelisted IPs configured."
# Check if 0.0.0.0/0 is in whitelisted IPs
elif "0.0.0.0/0" in instance.whitelisted_ips:
report.status = "FAIL"
report.status_extended = f"Analytics instance {instance.name} has public access with unrestricted IP range (0.0.0.0/0)."
else:
report.status = "PASS"
report.status_extended = f"Analytics instance {instance.name} has public access with restricted whitelisted IPs."
else:
report.status = "PASS"
report.status_extended = f"Analytics instance {instance.name} is deployed within a VCN or has restricted access."
findings.append(report)
return findingsReferences
- https://docs.public.content.oci.oraclecloud.com/en-us/iaas/analytics-cloud/doc/public-endpoints-and-access-control-rules.html
- https://docs.oracle.com/en/cloud/paas/analytics-cloud/acsds/connect-databases-deployed-public-ip-address.html
- https://docs.oracle.com/en/cloud/paas/analytics-cloud/acoci/top-faqs-public-or-private-endpoint-security.html
- https://docs.oracle.com/en/cloud/paas/analytics-cloud/acoci/manage-ingress-access-rules-public-endpoint-using-console.html
- https://docs.oracle.com/en-us/iaas/analytics-cloud/doc/public-endpoints-and-access-control-rules.html