LoginSignup
0
0

More than 1 year has passed since last update.

Microsoft Azure: 秘密鍵を使ってサービスプリンシパルの認証を行う

Last updated at Posted at 2022-12-29

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())
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0