1. Default Security Settings for OCI-Based AI Development Environments


    Creating a secure AI development environment in Oracle Cloud Infrastructure (OCI) involves setting up various resources and services that are each configured with security in mind. An AI development environment typically requires compute resources, databases, and perhaps analytics services, among others. The Pulumi OCI package provides various resources to create and manage your cloud infrastructure with code.

    Below is a Pulumi Python program to set up an AI development environment with default security settings in OCI:

    1. Autonomous Database - This is a fully-managed, pre-configured database service that is ideal for new applications developed in the cloud. It automates routine database tasks such as tuning, backups, updates, and scaling. The oci.Database.AutonomousDatabase resource sets up such a database with security features like network security groups and an access control list.

    2. Container Engine Cluster - For AI development, containerized environments are often used. The oci.ContainerEngine.Cluster resource creates a Kubernetes cluster that can run containerized applications. It can be configured with a Kubernetes network configuration and supports the use of KMS keys for encryption.

    3. Analytics Instance - An analytics instance in OCI is useful for processing large datasets, which is common in AI development. The oci.Analytics.AnalyticsInstance resource provisions such an instance, and it's set up with network endpoint details for private access.

    Here is a basic Pulumi program that sets up these resources:

    import pulumi import pulumi_oci as oci # Create an Autonomous Database for storaging and querying data efficiently. autonomous_db = oci.database.AutonomousDatabase("aiAutonomousDb", compartment_id=oci.get_tenancy().id, db_name="aidb", cpu_core_count=1, data_storage_size_in_tbs=1, admin_password="YourStrong#Password1", # Replace with a strong password. # Please note that storing sensitive information in plaintext can be unsafe. # It's recommended to use a Pulumi configuration or a secret manager for such values. license_model="LICENSE_INCLUDED", db_workload="OLTP") # Set up the Container Engine for Kubernetes (OKE) for deploying containerized AI applications. oke_cluster = oci.containerengine.Cluster("aiOkeCluster", compartment_id=oci.get_tenancy().id, kubernetes_version="v1.21.5", # Specify a supported version for the Kubernetes cluster. options=oci.containerengine.ClusterOptionsArgs( service_lb_subnet_ids=["subnet-id1", "subnet-id2"] )) # Provision an Analytics Instance for running AI analytics workloads. analytics_instance = oci.analytics.AnalyticsInstance("aiAnalyticsInstance", compartment_id=oci.get_tenancy().id, feature_set="ENTERPRISE_ANALYTICS", capacity=oci.analytics.AnalyticsInstanceCapacityArgs( capacity_type="OLPU_COUNT", capacity_value=2 ), license_type="LICENSE_INCLUDED", email_notification="admin@example.com", # It is advisable to avoid hardcoding email addresses and fetch them securely from a configuration or environment variable. ) # Output the connection strings and URLs for the resources created. pulumi.export("autonomous_db_connection", autonomous_db.connection_strings) pulumi.export("oke_cluster_endpoint", oke_cluster.endpoints) pulumi.export("analytics_instance_url", analytics_instance.service_url)

    This program will:

    • Create an Autonomous Database with default security features and one OCPU and 1 TB of storage.
    • Provision a Kubernetes cluster using Container Engine for Kubernetes (OKE) where AI applications can be containerized and scaled.
    • Set up an Analytics Instance with two OCPU counts and Enterprise Analytics features.

    Remember to replace the placeholders (like admin password, subnet IDs, and email notification) with appropriate values following best practices.

    Security best practices include:

    • Using generated passwords or keys stored in secure storage, or a secret management service offered by OCI.
    • Configuring network access controls such as Virtual Cloud Networks (VCNs), Security Groups, and Network Security Groups to restrict access to resources.
    • Enabling logging and monitoring to track usage and performance and for auditing purposes.

    After you initialize your Pulumi program with pulumi up, it will provision these resources within your OCI account, and you'll receive outputs that provide connection information to access the resources deployed. It's important also to set up proper Identity and Access Management (IAM) policies to control access to different resources and services.