az keyvault 2.25.0 will fail when using --subscription with account that only has data plane access (worked in 2.24.2)
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 3.5k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 60
Description
### **This is autogenerated. Please review and update as needed.**
## Describe the bug
In our enterprise environment we frequently have Service Principals that do not have Azure Resource (RBAC) access to the Key Vault, but do have data place access using Key Vault access policies with the Key Vault permission policy set to access policies. Until az 2.25.0 we have been able to perform operations on the key vault using azure cli by setting the --subscription option to the subscription the key vault is in. This previously did create a warning, but still worked. In 2.25.0 this generates an error and the command fails.
**Command Name**
`az keyvault secret list`
**Errors:**
```
Subscription '00000000-0000-0000-0000-000000000000' not found. Check the spelling and casing and try again.
```
## To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.
- az login --service-principal -u SPNID -p SPNPASWORD -t SPNTENANTID --allow-no-subscriptions
- `az keyvault secret list --vault-name {} --subscription {}`
## Expected Behavior
I should be able to list secrets in the key vault as the SPN account does have data plane access using key vault access policies.
## Environment Summary
```
Windows-10-10.0.18362-SP0
Python 3.8.9
Installer: MSI
azure-cli 2.25.0
```
## Additional Context
Debug output.
cli.knack.cli: Command arguments: ['keyvault', 'secret', 'list', '--vault-name', 'kv', '--subscription', '00000000-0000-0000-0000-000000000000', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [, , ]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'keyvault': ['azure.cli.command_modules.keyvault']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: keyvault 0.014 19 117
cli.azure.cli.core: Total (1) 0.014 19 117
cli.azure.cli.core: Loaded 19 groups, 117 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command : keyvault secret list
cli.azure.cli.core: Command table: keyvault secret list
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate []
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to 'C:\Users\xxx\.azure\commands\xxxx.xxx.log'.
az_command_data_logger: command args: keyvault secret list --vault-name {} --subscription {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [.add_subscription_parameter at 0x04776190>, .register_query_examples at 0x04785808>]
cli.knack.cli: Event: CommandInvoker.OnPostArgumentLoad []
cli.knack.cli: Event: CommandInvoker.OnPostCommandTableCreate [.add_ids_arguments at 0x04785850>, .add_cache_arguments at 0x047858E0>]
cli.knack.cli: Event: CommandInvoker.OnCommandTableLoaded []
cli.knack.cli: Event: CommandInvoker.OnPreParseArgs []
cli.azure.cli.core.commands.arm: Subscription '00000000-0000-0000-0000-000000000000' not recognized.
cli.knack.cli: Event: CommandInvoker.OnPostParseArgs [, , .handle_example_parameter at 0x04776220>, .parse_ids_arguments at 0x04785898>]
msrest.universal_http.requests: Configuring retry: max_retries=4, backoff_factor=0.8, max_backoff=90
msrest.async_paging: Paging async iterator protocol is not available for SecretItemPaged
msrest.service_client: Accept header absent and forced to application/json
msrest.universal_http: Configuring redirects: allow=True, max=30
msrest.universal_http: Configuring request: timeout=100, verify=True, cert=None
msrest.universal_http: Configuring proxies: ''
msrest.universal_http: Evaluate proxies against ENV settings: True
urllib3.connectionpool: Starting new HTTPS connection (1): kv.vault.azure.net:443
urllib3.connectionpool: https://kv.vault.azure.net:443 "GET /secrets?api-version=7.0 HTTP/1.1" 401 97
cli.azure.cli.core._profile: Profile.get_raw_token invoked with resource='https://vault.azure.net', subscription='00000000-0000-0000-0000-000000000000', tenant=None
cli.azure.cli.core.util: azure.cli.core.util.handle_exception is called with an exception:
cli.azure.cli.core.util: Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_command_type.py", line 116, in keyvault_command_handler
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_transformers.py", line 12, in _multi_transformers
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_transformers.py", line 29, in filter_out_managed_resources
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_transformers.py", line 29, in
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/paging.py", line 143, in __next__
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/paging.py", line 129, in advance_page
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/keyvault/v7_0/key_vault_client.py", line 1918, in internal_paging
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/service_client.py", line 336, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/__init__.py", line 197, in run
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/__init__.py", line 150, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/requests.py", line 72, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/requests.py", line 137, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/__init__.py", line 150, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/pipeline/requests.py", line 193, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/universal_http/requests.py", line 333, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msrest/universal_http/requests.py", line 139, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\requests/sessions.py", line 542, in request
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\requests/sessions.py", line 662, in send
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\requests/hooks.py", line 31, in dispatch_hook
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/keyvault/key_vault_authentication.py", line 146, in _handle_401
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/keyvault/key_vault_authentication.py", line 169, in _get_message_security
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/keyvault/key_vault_authentication.py", line 60, in _auth_callback_compat
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_client_factory.py", line 141, in get_token
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/_profile.py", line 673, in get_raw_token
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/_profile.py", line 519, in get_subscription
knack.util.CLIError: Subscription '2e9b9286-6415-4e5e-a4d3-9dc2118f7f9c' not found. Check the spelling and casing and try again.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/cli.py", line 231, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 657, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 720, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 691, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 328, in __call__
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_command_type.py", line 138, in keyvault_command_handler
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/keyvault/_command_type.py", line 51, in keyvault_exception_handler
knack.util.CLIError: Subscription '00000000-0000-0000-0000-000000000000' not found. Check the spelling and casing and try again.
cli.azure.cli.core.azclierror: Subscription '00000000-0000-0000-0000-000000000000' not found. Check the spelling and casing and try again.
az_command_data_logger: Subscription '00000000-0000-0000-0000-000000000000' not found. Check the spelling and casing and try again.
cli.knack.cli: Event: Cli.PostExecute []
az_command_data_logger: exit code: 1
cli.__main__: Command ran in 1.049 seconds (init: 0.260, invoke: 0.788)
Contributor guide
Assessment
This issue has not been assessed yet.