{
  "markdown": "# Azurator\n\n[![PyPI Latest Release](https://img.shields.io/pypi/v/azurator.svg)](https://pypi.org/project/azurator/)\n[![Pepy Total Downloads](https://img.shields.io/pepy/dt/azurator)](https://pepy.tech/project/azurator)\n[![GitHub License](https://img.shields.io/github/license/janthmueller/azurator)](https://github.com/janthmueller/azurator/blob/main/LICENSE)\n\nAzurator rotates shared-key credentials for Azure services and updates\nsupported places where they are stored.\n\n> [!WARNING]\n> Azurator is pre-alpha. Key rotation changes Azure and cannot be rolled back.\n> Review the displayed changes before confirming them.\n\n## Installation\n\nPython installations require Python 3.10 or newer. The default login uses the\n[Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli).\n\n```bash\npipx install azurator\n```\n\nOther install paths:\n\n- `pip install azurator`\n- prebuilt archives from the [latest release](https://github.com/janthmueller/azurator/releases/latest)\n- `nix run github:janthmueller/azurator -- --help`\n\nThe optional SOPS workflow also requires SOPS 3.13.x. See the\n[installation guide](https://janthmueller.github.io/azurator/getting-started/installation/)\nfor details.\n\n## Quick Start\n\nRotate keys already stored in a dotenv file:\n\n```bash\nazurator login\nazurator rotate --env-file .env\n```\n\nAzurator matches the file values to supported Azure keys, shows every planned\nchange, asks once for confirmation, rotates the keys, and updates the file and\nsupported Azure configuration that stores the same values.\nStorage keys may be stored either as raw values or in supported Shared Key\nconnection strings.\n\nInspect or preview first when needed:\n\n```bash\nazurator match --env-file .env\nazurator plan --env-file .env\n```\n\n## Other Workflows\n\n- `azurator rotate` selects keys interactively.\n- `azurator rotate --sops-file secrets.enc.env` updates a SOPS-encrypted dotenv file.\n- `azurator export --sops-out azure-keys.enc.env --key-map-out azurator.keys.json`\n  creates an encrypted dotenv file and its reusable secret-free key map.\n- `azurator export --out azure-keys.env` creates a new dotenv file from selected keys.\n- `azurator match --sops-file secrets.enc.env --key-map-out azurator.keys.json`\n  saves mappings for `azurator export --key-map azurator.keys.json --sops-out recreated.enc.env`.\n- `azurator refresh --key-map azurator.keys.json --sops-file secrets.enc.env`\n  updates the mapped existing assignments with their current Azure values.\n- `azurator discover` lists supported key resources without retrieving key values.\n\n## Current Scope\n\nAzurator rotates Storage Account keys and the `Key1` and `Key2` credentials\nexposed by Azure AI, Cognitive Services, and Azure OpenAI. When the same key is\nstored in a selected dotenv file, a supported Foundry project connection, or an\nApp Service application setting, Azurator can update that configuration during\nthe rotation. Storage connection strings in supported dotenv and App Service\nsettings keep their existing fields while `AccountKey` is replaced.\n\nAzurator checks only the documented configuration types. It does not discover\nevery Azure secret or prove that a running workload uses a key.\n\nSee [Supported Key Resources and Bindings](https://janthmueller.github.io/azurator/reference/supported-keys-and-bindings/)\nfor the exact current coverage.\n\n## Shared Keys and Microsoft Entra ID\n\nShared keys are useful for prototypes and existing integrations, but they must\nbe stored, distributed, and rotated. Prefer Microsoft Entra ID when the service\nand workload support it. Use Azurator when shared keys remain the practical\nchoice.\n\nRead Microsoft's guidance for\n[secretless authentication](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/secretless-authentication),\n[Foundry authentication](https://learn.microsoft.com/en-us/azure/foundry/concepts/authentication-authorization-foundry),\nand [Azure Storage Shared Key](https://learn.microsoft.com/en-us/azure/storage/common/shared-key-authorization-prevent).\n\n## Documentation\n\nSee the [documentation](https://janthmueller.github.io/azurator/) for setup,\nsupported workflows, and recovery.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 4243,
  "sha": "d9aeab955f717462821c6e41310c991c8b1b943cc397602649f0cc05de5037d7",
  "repo_slug": "janthmueller/azurator",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_janthmueller_azurator_knowledge_index_md_ba7048a9/readme"
}