Module awsrun.plugins.creds.azure
Plug-ins for Azure credential loading.
The plug-ins in this module allow a user to control how credentials are obtained
for the Azure accounts specified on the azurerun CLI. To configure the azurerun
CLI to use one of these plug-ins, or a user-defined plug-in, specify a
Credentials
block in the user configuration file:
Credentials:
plugin: PYTHON_MODULE.CLASSNAME
options:
ARG1: VAL1
ARG2: VAL2
Refer to each plug-in's documentation for a list of valid options that can be
provided via the configuration file or via azurerun CLI flags. CLI flags override
the values defined in the configuration file. The plugin
key may be one of the
following values:
- awsrun.plugins.creds.azure.Default
Default
uses the default Azure SDK credential methods.- awsrun.plugins.creds.azure.UsernamePassword
UsernamePassword
uses a username & password for credentials.- your.own.module.PluginSubclass
- A custom plug-in installed in the Python path that subclasses
Plugin
that returns aSessionProvider
.
Expand source code
#
# Copyright 2019 FMR LLC <opensource@fidelity.com>
#
# SPDX-License-Identifier: Apache-2.0
#
"""Plug-ins for Azure credential loading.
The plug-ins in this module allow a user to control how credentials are obtained
for the Azure accounts specified on the azurerun CLI. To configure the azurerun
CLI to use one of these plug-ins, or a user-defined plug-in, specify a
`Credentials` block in the user configuration file:
Credentials:
plugin: PYTHON_MODULE.CLASSNAME
options:
ARG1: VAL1
ARG2: VAL2
Refer to each plug-in's documentation for a list of valid options that can be
provided via the configuration file or via azurerun CLI flags. CLI flags override
the values defined in the configuration file. The `plugin` key may be one of the
following values:
awsrun.plugins.creds.azure.Default
: `Default` uses the default Azure SDK credential methods.
awsrun.plugins.creds.azure.UsernamePassword
: `UsernamePassword` uses a username & password for credentials.
your.own.module.PluginSubclass
: A custom plug-in installed in the Python path that subclasses
`awsrun.plugmgr.Plugin` that returns a `awsrun.session.SessionProvider`.
"""
import getpass
import os
from awsrun.config import Str
from awsrun.plugmgr import Plugin
from awsrun.session.azure import CredsViaAzureDefault, CredsViaUsernamePassword
class Default(Plugin):
"""CLI plug-in that uses the default Azure credential mechanisms.
## Overview
Credentials are obtained via environment variables, a managed identity on an
Azure host, the shared token cache (Windows only), Azure VSCode, Azure CLI,
or interactively via the browser. These are tried in order until one
succeeds.
For more information, see [Azure SDK
documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-identity/1.5.0/index.html#defaultazurecredential)
## Configuration
Options with an asterisk are mandatory and must be provided:
Credentials:
plugin: awsrun.plugins.creds.azure.Default
options:
authority: STRING
## Plug-in Options
Some options can be overridden on the azurerun CLI via command line flags.
In those cases, the CLI flags are specified next to the option name below:
`authority`, `--ad-authority`
: The `authority` specifies the Microsoft AD authority host. If one is not
provided, the default is "login.microsoftonline.com".
"""
def __init__(self, parser, cfg):
super().__init__(parser, cfg)
# Define the arguments that we want to allow a user to override via the
# main CLI. Any CLI args added via add_argument will be commingled with
# the main azurerun args, so they are prefixed with '--ad-' to lessen
# chance of a name collision.
group = parser.add_argument_group("Azure authentication options")
group.add_argument(
"--ad-authority",
metavar="NAME",
default=self.cfg(
"authority", type=Str, default="login.microsoftonline.com"
),
help="Azure AD authority host",
)
def instantiate(self, args):
return CredsViaAzureDefault(authority=args.ad_authority)
class UsernamePassword(Plugin):
"""CLI plug-in that uses the default Azure credential mechanisms.
## Overview
Credentials are obtained by authenticating with Azure AD using a username
and password. Access tokens are cached by the underlying MSAL library and
automatically refreshed as needed.
For more information, see [Azure SDK
documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-identity/1.4.0/azure.identity.html#azure.identity.UsernamePasswordCredential)
## Configuration
Options with an asterisk are mandatory and must be provided:
Credentials:
plugin: awsrun.plugins.creds.azure.Default
options:
username: EMAIL
password: STRING
tenant: STRING
authority: STRING
## Plug-in Options
Some options can be overridden on the azurerun CLI via command line flags.
In those cases, the CLI flags are specified next to the option name below:
`username`, `--ad-username`
: The `username` to use when requesting access tokens. It is typically an
email address that specifies the user and Azure tenant.
`password`, `--ad-password`
: The password to use when requesting access tokens. The default is the
value, if any, of the PASSWORD environment variable. If none of these are
set, the user will be prompted via the console when azurerun is invoked.
`tenant`, `--ad-tenant`
: The `tenant_id` specifies the tenant where the user resides. Normally,
this can be derived from the email address used as the username, so it is
not normally required.
`authority`, `--ad-authority`
: The `authority` specifies the Microsoft AD authority host. If one is not
provided, the default is "login.microsoftonline.com".
"""
def __init__(self, parser, cfg):
super().__init__(parser, cfg)
# Define the arguments that we want to allow a user to override via the
# main CLI. Any CLI args added via add_argument will be commingled with
# the main azurerun args, so they are prefixed with '--az-' to lessen
# chance of a name collision.
group = parser.add_argument_group("Azure authentication options")
group.add_argument(
"--ad-username",
metavar="USER",
default=self.cfg("username", type=Str),
help="username for Azure AD authentication",
)
group.add_argument(
"--ad-password",
metavar="PASS",
default=self.cfg(
"password", type=Str, default=os.environ.get("PASSWORD", None)
),
help="password for Azure AD authentication",
)
group.add_argument(
"--ad-tenant",
metavar="ID",
default=self.cfg("tenant", type=Str),
help="Azure tenant or directory ID",
)
group.add_argument(
"--ad-authority",
metavar="NAME",
default=self.cfg(
"authority", type=Str, default="login.microsoftonline.com"
),
help="Azure AD authority host",
)
def instantiate(self, args):
args.ad_username = args.ad_username or input("Username (email address)? ")
args.ad_password = args.ad_password or getpass.getpass(
f"Password for {args.ad_username}? "
)
return CredsViaUsernamePassword(
args.ad_username,
args.ad_password,
tenant_id=args.ad_tenant,
authority=args.ad_authority,
)
Classes
class Default (parser, cfg)
-
CLI plug-in that uses the default Azure credential mechanisms.
Overview
Credentials are obtained via environment variables, a managed identity on an Azure host, the shared token cache (Windows only), Azure VSCode, Azure CLI, or interactively via the browser. These are tried in order until one succeeds.
For more information, see Azure SDK documentation
Configuration
Options with an asterisk are mandatory and must be provided:
Credentials: plugin: awsrun.plugins.creds.azure.Default options: authority: STRING
Plug-in Options
Some options can be overridden on the azurerun CLI via command line flags. In those cases, the CLI flags are specified next to the option name below:
authority
,--ad-authority
- The
authority
specifies the Microsoft AD authority host. If one is not provided, the default is "login.microsoftonline.com".
Expand source code
class Default(Plugin): """CLI plug-in that uses the default Azure credential mechanisms. ## Overview Credentials are obtained via environment variables, a managed identity on an Azure host, the shared token cache (Windows only), Azure VSCode, Azure CLI, or interactively via the browser. These are tried in order until one succeeds. For more information, see [Azure SDK documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-identity/1.5.0/index.html#defaultazurecredential) ## Configuration Options with an asterisk are mandatory and must be provided: Credentials: plugin: awsrun.plugins.creds.azure.Default options: authority: STRING ## Plug-in Options Some options can be overridden on the azurerun CLI via command line flags. In those cases, the CLI flags are specified next to the option name below: `authority`, `--ad-authority` : The `authority` specifies the Microsoft AD authority host. If one is not provided, the default is "login.microsoftonline.com". """ def __init__(self, parser, cfg): super().__init__(parser, cfg) # Define the arguments that we want to allow a user to override via the # main CLI. Any CLI args added via add_argument will be commingled with # the main azurerun args, so they are prefixed with '--ad-' to lessen # chance of a name collision. group = parser.add_argument_group("Azure authentication options") group.add_argument( "--ad-authority", metavar="NAME", default=self.cfg( "authority", type=Str, default="login.microsoftonline.com" ), help="Azure AD authority host", ) def instantiate(self, args): return CredsViaAzureDefault(authority=args.ad_authority)
Ancestors
Inherited members
class UsernamePassword (parser, cfg)
-
CLI plug-in that uses the default Azure credential mechanisms.
Overview
Credentials are obtained by authenticating with Azure AD using a username and password. Access tokens are cached by the underlying MSAL library and automatically refreshed as needed.
For more information, see Azure SDK documentation
Configuration
Options with an asterisk are mandatory and must be provided:
Credentials: plugin: awsrun.plugins.creds.azure.Default options: username: EMAIL password: STRING tenant: STRING authority: STRING
Plug-in Options
Some options can be overridden on the azurerun CLI via command line flags. In those cases, the CLI flags are specified next to the option name below:
username
,--ad-username
- The
username
to use when requesting access tokens. It is typically an email address that specifies the user and Azure tenant. password
,--ad-password
- The password to use when requesting access tokens. The default is the value, if any, of the PASSWORD environment variable. If none of these are set, the user will be prompted via the console when azurerun is invoked.
tenant
,--ad-tenant
- The
tenant_id
specifies the tenant where the user resides. Normally, this can be derived from the email address used as the username, so it is not normally required. authority
,--ad-authority
- The
authority
specifies the Microsoft AD authority host. If one is not provided, the default is "login.microsoftonline.com".
Expand source code
class UsernamePassword(Plugin): """CLI plug-in that uses the default Azure credential mechanisms. ## Overview Credentials are obtained by authenticating with Azure AD using a username and password. Access tokens are cached by the underlying MSAL library and automatically refreshed as needed. For more information, see [Azure SDK documentation](https://azuresdkdocs.blob.core.windows.net/$web/python/azure-identity/1.4.0/azure.identity.html#azure.identity.UsernamePasswordCredential) ## Configuration Options with an asterisk are mandatory and must be provided: Credentials: plugin: awsrun.plugins.creds.azure.Default options: username: EMAIL password: STRING tenant: STRING authority: STRING ## Plug-in Options Some options can be overridden on the azurerun CLI via command line flags. In those cases, the CLI flags are specified next to the option name below: `username`, `--ad-username` : The `username` to use when requesting access tokens. It is typically an email address that specifies the user and Azure tenant. `password`, `--ad-password` : The password to use when requesting access tokens. The default is the value, if any, of the PASSWORD environment variable. If none of these are set, the user will be prompted via the console when azurerun is invoked. `tenant`, `--ad-tenant` : The `tenant_id` specifies the tenant where the user resides. Normally, this can be derived from the email address used as the username, so it is not normally required. `authority`, `--ad-authority` : The `authority` specifies the Microsoft AD authority host. If one is not provided, the default is "login.microsoftonline.com". """ def __init__(self, parser, cfg): super().__init__(parser, cfg) # Define the arguments that we want to allow a user to override via the # main CLI. Any CLI args added via add_argument will be commingled with # the main azurerun args, so they are prefixed with '--az-' to lessen # chance of a name collision. group = parser.add_argument_group("Azure authentication options") group.add_argument( "--ad-username", metavar="USER", default=self.cfg("username", type=Str), help="username for Azure AD authentication", ) group.add_argument( "--ad-password", metavar="PASS", default=self.cfg( "password", type=Str, default=os.environ.get("PASSWORD", None) ), help="password for Azure AD authentication", ) group.add_argument( "--ad-tenant", metavar="ID", default=self.cfg("tenant", type=Str), help="Azure tenant or directory ID", ) group.add_argument( "--ad-authority", metavar="NAME", default=self.cfg( "authority", type=Str, default="login.microsoftonline.com" ), help="Azure AD authority host", ) def instantiate(self, args): args.ad_username = args.ad_username or input("Username (email address)? ") args.ad_password = args.ad_password or getpass.getpass( f"Password for {args.ad_username}? " ) return CredsViaUsernamePassword( args.ad_username, args.ad_password, tenant_id=args.ad_tenant, authority=args.ad_authority, )
Ancestors
Inherited members