Product Help

Azure Data Library

Overview

The ConfigurationDatabaseLib library provides integrations with various Azure services, including Azure App Configuration and Azure Key Vault. Additionally, it includes an EntraIDConnector that facilitates making authenticated requests to Azure Active Directory using a service principal for applications that need secure, programmatic access to Azure resources.

Features

  • App Configuration: Retrieve configuration settings stored in Azure App Configuration.

  • Key Vault Integration: Securely fetch secrets from Azure Key Vault.

  • Azure AD Integration: Use a service principal to authenticate and make requests to Microsoft Graph API.

Installation

To install the ConfigurationDatabaseLib, run:

go get github.com/jvetereaoh/ConfigurationDatabaseLib/v2

Setup

Prerequisites

  • Azure Account: Set up Azure resources like Azure App Configuration, Key Vault, and a service principal in Azure Active Directory.

  • Environment Variables: Configure the following environment variables:

AZURE_APPCONFIG_ENDPOINT=<your_app_config_endpoint> AZURE_KEYVAULT_NAME=<your_key_vault_name> AZURE_CLIENT_ID=<your_service_principal_client_id> AZURE_CLIENT_SECRET=<your_service_principal_client_secret> AZURE_TENANT_ID=<your_azure_tenant_id>

Configuration

  • App Configuration: Ensure your Azure App Configuration instance is set up and populated with necessary configuration values.

  • Key Vault: Store secrets in Azure Key Vault for secure access.

Usage

1. Initialize Azure App Configuration

This feature allows you to initialize and fetch configuration settings from Azure App Configuration.

package main import ( "context" "fmt" "log" "github.com/jvetereaoh/ConfigurationDatabaseLib/v2/pkg/configuration" ) func main() { appConfig, err := configuration.InitializeAppConfig() if err != nil { log.Fatalf("Failed to initialize App Configuration: %v", err) } setting, err := appConfig.GetConfigSetting(context.Background(), "my-config-key") if err != nil { log.Fatalf("Failed to get config setting: %v", err) } fmt.Println("Config setting value:", setting) }

2. Initialize and Retrieve Secrets from Azure Key Vault

This feature initializes the Azure Key Vault client and fetches secrets by name.

package main import ( "context" "fmt" "log" "github.com/jvetereaoh/ConfigurationDatabaseLib/v2/pkg/configuration" ) func main() { keyVault, err := configuration.InitializeKeyVault(context.Background()) if err != nil { log.Fatalf("Failed to initialize Key Vault: %v", err) } secret, err := keyVault.GetSecret(context.Background(), "my-secret-name") if err != nil { log.Fatalf("Failed to get secret: %v", err) } fmt.Println("Secret value:", secret) }

3. Using the EntraIDConnector for Authenticated Requests

The EntraIDConnector component allows applications to securely authenticate and interact with Azure Active Directory and Microsoft Graph API.

package main import ( "context" "fmt" "log" "github.com/jvetereaoh/ConfigurationDatabaseLib/v2/pkg/entraIDConnector" ) func main() { connector, err := entraIDConnector.CreateEntraIDConnector("client_id", "client_secret", "tenant_id", "service_principal_id") if err != nil { log.Fatalf("Failed to create EntraIDConnector: %v", err) } response, err := connector.AuthenticatedGetRequest(context.Background(), "https://graph.microsoft.com/v1.0/me") if err != nil { log.Fatalf("Failed to make authenticated request: %v", err) } fmt.Println("Authenticated request successful:", response) }

Contributing

Contributions are welcome! Please submit a pull request with your changes, and make sure to include tests where applicable.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Last modified: 28 January 2025