1. Secure Access to Azure Cognitive Services via PrivateLink


    Accessing Azure Cognitive Services securely often involves restricting the network access for enhanced security. Azure Private Link service provides a way to securely access Azure services over a private endpoint within your virtual network.

    A private endpoint is a network interface that connects you privately and securely to a service powered by Azure Private Link. The service could be an Azure service such as Azure Cognitive Services, Azure Storage, SQL, etc. Your private endpoint uses an IP address from your Azure VNet address space. It brings the Azure service into your VNet. This allows you to use your own private IPs and secures the data in transit within the Azure network.

    To set up a secure access to Azure Cognitive Services via PrivateLink, we'll use Pulumi to create the necessary resources. Specifically, we'll create an instance of Azure Cognitive Services and a Private Endpoint that will point to that service. We'll set up the necessary network configurations, such as the VNet and subnet configurations, to support this.

    Here's a step-by-step program written in Python that uses Pulumi to set up secure access to Azure Cognitive Services via PrivateLink:

    1. We'll start by setting up the virtual network and a dedicated subnet for the private link service.
    2. Next, we'll create the Azure Cognitive Services instance which will be connected over the PrivateLink.
    3. We will create a Private Endpoint that connects to the Cognitive Services instance privately.
    4. Finally, we will export the URL of the private endpoint to use in applications.

    Let's go through the program:

    import pulumi import pulumi_azure_native as azure_native # Create a new resource group for all resources resource_group = azure_native.resources.ResourceGroup('resource_group') # Create a virtual network for the Cognitive Services and Private Endpoint vnet = azure_native.network.VirtualNetwork( 'vnet', resource_group_name=resource_group.name, address_space=azure_native.network.AddressSpaceArgs( address_prefixes=[''], ), ) # Create a subnet dedicated to the Private Endpoint private_endpoint_subnet = azure_native.network.Subnet( 'private-endpoint-subnet', resource_group_name=resource_group.name, virtual_network_name=vnet.name, address_prefix='', private_endpoint_network_policies='Disabled', # Disable network policies for subnets associated with Private Link service. ) # Create an Azure Cognitive Services account cognitive_services_account = azure_native.cognitiveservices.Account( 'cognitiveServicesAccount', resource_group_name=resource_group.name, sku=azure_native.cognitiveservices.SkuArgs( name='S0', # Choose SKUs according to your needs ), kind='CognitiveServices', # This represents the kind of cognitive service location=resource_group.location, ) # Create a Private Endpoint for the Azure Cognitive Services Account private_endpoint = azure_native.network.PrivateEndpoint( 'privateEndpoint', resource_group_name=resource_group.name, subnet=azure_native.network.SubnetArgs( id=private_endpoint_subnet.id, ), private_service_connection=azure_native.network.PrivateEndpointPropertiesPrivateServiceConnectionArgs( name='cognitiveServicesConnection', private_connection_resource_id=cognitive_services_account.id, is_manual_connection=False, group_ids=['cognitiveservices'], # Group ID for Azure Cognitive Services ), manual_private_link_service_connections=[], ) # Export the ID of the Cognitive Services account and the Private Endpoint pulumi.export('cognitive_services_account_id', cognitive_services_account.id) pulumi.export('private_endpoint_id', private_endpoint.id)

    To use this Pulumi program:

    • Deploy the program using the Pulumi CLI.
    • Upon successful deployment, the ID of the Azure Cognitive Services Account and the Private Endpoint will be outputted. Use these IDs to configure your applications to access Cognitive Services securely through the Private Endpoint.

    This is just one example of how you can use Pulumi to build and configure Azure infrastructure with code. Make sure to tailor the setup to your specific needs, like choosing the right SKU for the Cognitive Services or configuring additional network security rules.