{"id":18022873,"url":"https://github.com/ramonpage/ex_azure_key_vault","last_synced_at":"2025-10-14T01:14:14.664Z","repository":{"id":32849351,"uuid":"144351894","full_name":"RamonPage/ex_azure_key_vault","owner":"RamonPage","description":"Elixir wrapper for Azure Key Vault REST API","archived":false,"fork":false,"pushed_at":"2024-11-22T08:12:03.000Z","size":357,"stargazers_count":7,"open_issues_count":7,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T17:13:29.217Z","etag":null,"topics":["azure","azure-key-vault","elixir","key-management","key-vault","secret-management","secrets"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RamonPage.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-11T03:20:51.000Z","updated_at":"2024-08-23T13:51:46.000Z","dependencies_parsed_at":"2024-08-23T04:45:56.823Z","dependency_job_id":"0608ebff-0933-4b57-b89e-f255b714b822","html_url":"https://github.com/RamonPage/ex_azure_key_vault","commit_stats":{"total_commits":202,"total_committers":9,"mean_commits":"22.444444444444443","dds":0.7178217821782178,"last_synced_commit":"a9cc782453db0e9afc6586ca71268cbfceecb065"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonPage%2Fex_azure_key_vault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonPage%2Fex_azure_key_vault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonPage%2Fex_azure_key_vault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RamonPage%2Fex_azure_key_vault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RamonPage","download_url":"https://codeload.github.com/RamonPage/ex_azure_key_vault/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245753858,"owners_count":20666823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","azure-key-vault","elixir","key-management","key-vault","secret-management","secrets"],"created_at":"2024-10-30T07:06:06.875Z","updated_at":"2025-10-14T01:14:09.622Z","avatar_url":"https://github.com/RamonPage.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Elixir Azure Key Vault\n\n![Elixir CI](https://github.com/RamonPage/ex_azure_key_vault/actions/workflows/elixir.yml/badge.svg?branch=main)\n[![Hex.pm Version](https://img.shields.io/hexpm/v/ex_azure_key_vault.svg)](https://hex.pm/packages/ex_azure_key_vault)\n[![Hex.pm Download Total](https://img.shields.io/hexpm/dt/ex_azure_key_vault.svg)](https://hex.pm/packages/ex_azure_key_vault)\n[![Coverage Status](https://coveralls.io/repos/github/RamonPage/ex_azure_key_vault/badge.svg?branch=main)](https://coveralls.io/github/RamonPage/ex_azure_key_vault?branch=main)\n\nElixir wrapper for Azure Key Vault REST API.\n\n## Installation\n\nThe package can be installed\nby adding `ex_azure_key_vault` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:ex_azure_key_vault, \"~\u003e 2.2.1\"}\n  ]\nend\n```\n\n[Documentation is available on hexdocs.pm](https://hexdocs.pm/ex_azure_key_vault/).\n\n## Basic usage\n\nWhen defining environment variables and/or adding to configuration.\n\n```bash\n$ export AZURE_CLIENT_ID=\"14e79d90-9abf...\"\n$ export AZURE_CLIENT_SECRET=\"14e7a11e-9abf...\"\n$ export AZURE_TENANT_ID=\"14e7a376-9abf...\"\n$ export AZURE_VAULT_NAME=\"my-vault\"\n```\n\n```elixir\n# Config.exs\nconfig :ex_azure_key_vault,\n  azure_client_id: {:system, \"AZURE_CLIENT_ID\"},\n  azure_client_secret: {:system, \"AZURE_CLIENT_SECRET\"},\n  azure_tenant_id: {:system, \"AZURE_TENANT_ID\"},\n  azure_vault_name: {:system, \"AZURE_VAULT_NAME\"}\n```\n\n### Getting a secret\n```elixir\niex(1)\u003e ExAzureKeyVault.Client.connect() |\u003e ExAzureKeyVault.Client.get_secret(\"my-secret\")\n{:ok, \"my-value\"}\n```\n\n### Creating a secret\n```elixir\niex(1)\u003e ExAzureKeyVault.Client.connect() |\u003e ExAzureKeyVault.Client.create_secret(\"my-new-secret\", \"my-new-value\")\n:ok\n```\n\n### Deleting a secret\n```elixir\niex(1)\u003e ExAzureKeyVault.Client.connect() |\u003e ExAzureKeyVault.Client.delete_secret(\"my-secret\")\n:ok\n```\n\n## Connecting with client assertion\n\nFor additional security, `ex_azure_key_vault` accepts client assertion instead of a client secret. To do so, first you need to upload a certificate to your Azure App Registration. Then pass the certificate SHA-1 thumbprint in base64 format and the private key in PEM format to `ex_azure_key_vault`.\n\n```bash\n$ export AZURE_CLIENT_ID=\"14e79d90-9abf...\"\n$ export AZURE_TENANT_ID=\"14e7a376-9abf...\"\n$ export AZURE_VAULT_NAME=\"my-vault\"\n$ export AZURE_CERT_BASE64_THUMBPRINT=\"Dss7v2YI3GgCGfl...\",\n$ export AZURE_CERT_PRIVATE_KEY_PEM=\"-----BEGIN PRIVATE KEY-----\\nMIIEvQIBADANBgkqhkiG9w0BAQEF...\"\n```\n\n```elixir\n# Config.exs\nconfig :ex_azure_key_vault,\n  azure_client_id: {:system, \"AZURE_CLIENT_ID\"},\n  azure_tenant_id: {:system, \"AZURE_TENANT_ID\"},\n  azure_vault_name: {:system, \"AZURE_VAULT_NAME\"},\n  azure_cert_base64_thumbprint: {:system, \"AZURE_CERT_BASE64_THUMBPRINT\"},\n  azure_cert_private_key_pem: {:system, \"AZURE_CERT_PRIVATE_KEY_PEM\"}\n```\n\n### Getting a secret\n```elixir\niex(1)\u003e ExAzureKeyVault.Client.cert_connect() |\u003e ExAzureKeyVault.Client.get_secret(\"my-secret\")\n{:ok, \"my-value\"}\n```\n***\n\nThanks to [stuartbarr](https://github.com/stuartbarr/azure-key-vault) for the inspiration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framonpage%2Fex_azure_key_vault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framonpage%2Fex_azure_key_vault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framonpage%2Fex_azure_key_vault/lists"}