Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/azure-cli/azure/cli/command_modules/storage/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,11 @@ def load_arguments(self, _): # pylint: disable=too-many-locals, too-many-statem
min_api='2021-01-01',
help='Resource identifier of the UserAssigned identity to be associated with server-side '
'encryption on the storage account.')
c.argument('federated_identity_client_id', options_list=['--key-vault-federated-client-id', '-f'],
min_api='2021-08-01',
help='ClientId of the multi-tenant application to be used '
'in conjunction with the user-assigned identity for '
'cross-tenant customer-managed-keys server-side encryption on the storage account.')

for scope in ['storage account create', 'storage account update']:
with self.argument_context(scope, resource_type=ResourceType.MGMT_STORAGE, min_api='2017-06-01',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ def create_storage_account(cmd, resource_group_name, account_name, sku=None, loc
routing_choice=None, publish_microsoft_endpoints=None, publish_internet_endpoints=None,
require_infrastructure_encryption=None, allow_blob_public_access=None,
min_tls_version=None, allow_shared_key_access=None, edge_zone=None,
identity_type=None, user_identity_id=None, key_vault_user_identity_id=None,
identity_type=None, user_identity_id=None,
key_vault_user_identity_id=None, federated_identity_client_id=None,
sas_expiration_period=None, key_expiration_period_in_days=None,
allow_cross_tenant_replication=None, default_share_permission=None,
enable_nfs_v3=None, subnet=None, vnet_name=None, action='Allow', enable_alw=None,
Expand Down Expand Up @@ -106,10 +107,12 @@ def create_storage_account(cmd, resource_group_name, account_name, sku=None, loc
params.identity = Identity(type=identity_type, user_assigned_identities={user_identity_id: {}})
elif identity_type:
params.identity = Identity(type=identity_type)
if key_vault_user_identity_id is not None:
if key_vault_user_identity_id is not None or federated_identity_client_id is not None:
EncryptionIdentity = cmd.get_models('EncryptionIdentity')
params.encryption.encryption_identity = EncryptionIdentity(
encryption_user_assigned_identity=key_vault_user_identity_id)
encryption_user_assigned_identity=key_vault_user_identity_id,
encryption_federated_identity_client_id=federated_identity_client_id
)

if access_tier:
params.access_tier = AccessTier(access_tier)
Expand Down Expand Up @@ -355,7 +358,8 @@ def update_storage_account(cmd, instance, sku=None, tags=None, custom_domain=Non
domain_sid=None, azure_storage_sid=None, sam_account_name=None, account_type=None,
routing_choice=None, publish_microsoft_endpoints=None, publish_internet_endpoints=None,
allow_blob_public_access=None, min_tls_version=None, allow_shared_key_access=None,
identity_type=None, user_identity_id=None, key_vault_user_identity_id=None,
identity_type=None, user_identity_id=None,
key_vault_user_identity_id=None, federated_identity_client_id=None,
sas_expiration_period=None, key_expiration_period_in_days=None,
allow_cross_tenant_replication=None, default_share_permission=None,
immutability_period_since_creation_in_days=None, immutability_policy_state=None,
Expand Down Expand Up @@ -417,10 +421,15 @@ def update_storage_account(cmd, instance, sku=None, tags=None, custom_domain=Non
elif identity_type:
params.identity = Identity(type=identity_type)

if key_vault_user_identity_id is not None:
if key_vault_user_identity_id is not None or federated_identity_client_id is not None:
original_encryption_identity = params.encryption.encryption_identity if params.encryption else None
EncryptionIdentity = cmd.get_models('EncryptionIdentity')
if not original_encryption_identity:
original_encryption_identity = EncryptionIdentity()
params.encryption.encryption_identity = EncryptionIdentity(
encryption_user_assigned_identity=key_vault_user_identity_id)
encryption_user_assigned_identity=key_vault_user_identity_id if key_vault_user_identity_id else original_encryption_identity.encryption_user_assigned_identity,
encryption_federated_identity_client_id=federated_identity_client_id if federated_identity_client_id else original_encryption_identity.encryption_federated_identity_client_id
)

AzureFilesIdentityBasedAuthentication = cmd.get_models('AzureFilesIdentityBasedAuthentication')
if enable_files_aadds is not None:
Expand Down