PROVIDER

Synopsis

HELP:   How to reach the Azure account and who we are; can come from a parameter file
TYPE:   OBJECT
SYNTAX: PROVIDER(ACCOUNT='str',ENDPOINT='str',PORT=num,CABUNDLE='str',ACCOUNTKEY='str',SASTOKEN='str',TENANTID='str',CLIENTID='str',CLIENTSECRET='str',FEDERATEDFILE='str',CERTIFICATE='str',CERTPASSWORD='str',CERTLABEL='str')

Description

Everything that is constant for one Azure Blob Storage account.

A provider answers two questions that do not change from archive to archive: how the service is reached, and who we are to it. The storage account, the endpoint, the port and the trust anchor belong to the first, the credentials to the second. What stays outside is what varies: the CONTAINER and the PREFIX name the data, and the write buffers, OVERWRITE and TIMEOUT describe the run.

The storage account belongs in the provider and not outside it: it decides the request URL and it owns the account key. The container is what varies per archive.

TIMEOUT is deliberately not part of the provider. It says how long this particular run may make no progress, which is a property of the job and not of the service.

Reading a provider from a parameter file

The command line parser reads any object from a file, so:

store.azure(PROVIDER='/etc/flam/azprod.par' CONTAINER=archive PREFIX='hr/2026')

The file holds the parameter list without the surrounding brackets:

ACCOUNT=myaccount ACCOUNTKEY='Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6...'

The secret then never appears on a command line, which is visible in the process list and in the shell history of every user on the machine, and the file can carry its own access rights. On z/OS the file may be a data set.

Which authentication method applies

The method is chosen by which parameters are present, and the store reports its choice on the open line. Unlike the S3 provider these are genuine alternatives -- exactly one of them applies:

CERTLABEL is reserved: it will reference a protected key instead of a certificate file, which needs FKM5, and it is not implemented yet.

Why PORT exists next to ENDPOINT

ENDPOINT is optional. Without it the endpoint is derived from the account name, and then there is no URL text to carry a port. PORT reaches the derived host on a different port, a proxy or a gateway in front of the service. When ENDPOINT is given, PORT replaces a port already in it, because it is defined as an override.

Arguments