Microsoft Azure で、秘密鍵を使ってサービスプリンシパルの認証情報を作成するコードを紹介します。 サービスプリンシパルに証明書を登録した場合は秘密鍵を使って認証できます。
さらに、その認証を利用して、 Azure Storage Account のコンテナ一覧、ファイル一覧を行なってみます。
環境
- Python 3.10.8
- pipでインストールしたもの
- azure-identity 1.12.0
- azure-storage-blob 12.14.1
認証情報を作成するコード
秘密鍵を使って認証情報を作成する場合は、 azure.identity.CertificateCredential
を使います。
CertificateCredential
のパラメータとなる client_id
, tenant_id
はサービスプリンシパルのページからわかります。
import azure
config = {
'client_id': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'tenant_id': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
"private_key_file": "sample.pem"
}
credential = azure.identity.CertificateCredential(
config['tenant_id'],
config['client_id'],
config["private_key_file"]
)
認証を利用するコード
上で作成した認証情報を使って BlobServiceClient
を作成し、 ファイルを表示します。
account_url
は、各ストレージアカウントを表すURLで、 {ストレージアカウント名}.blob.core.windows.net
がドメイン名になります。
blob_service_client = azure.storage.blob.BlobServiceClient(
account_url='https://sample.blob.core.windows.net/', credential=credential
)
# list files in a container
container = blob_service_client.get_container_client('sample')
for x in container.list_blobs():
print(x['name'])
# download files in a container
for i, blob in enumerate(blobs_list):
blob_client = container.get_blob_client(blob.name)
with open(f"{i}.txt", "w") as f:
f.write(blob_client.download_blob().readall())