次の方法で共有


マネージド ID を使用して AzCopy アクセスを承認する

マネージド ID は、資格情報を格納したり SAS トークンを管理したりすることなく 、AzCopy 操作を承認するための安全で便利な方法を提供します。 この認証方法は、Azure Virtual Machines またはその他の Azure サービスで実行されている自動スクリプト、CI/CD パイプライン、アプリケーションに特に役立ちます。

この記事では、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を使用するように AzCopy を構成する方法について説明します。 環境変数、AzCopy ログイン コマンド、または既存の Azure CLI または Azure PowerShell セッションを利用して、アクセスを承認できます。

AzCopy へのアクセスを承認するその他の方法の詳細については、「 AzCopy の承認」を参照してください。

ロールの割り当てを確認する

マネージド ID に、目的の操作に必要な Azure ロールがあることを確認します。

ロールの割り当て手順については、「 BLOB データ (Blob Storage) へのアクセス用に Azure ロールを割り当てる 」または Azure portal (Azure Files) でファイル データへのアクセスを承認する方法を選択 する方法を参照してください。

ロールの割り当てが反映されるまでに最大 5 分かかることがあります。

階層型名前空間を持つアカウント内の BLOB を転送する場合は、ターゲット コンテナーまたはディレクトリのアクセス制御リスト (ACL) にセキュリティ プリンシパルを追加する場合、これらのロールのいずれかをセキュリティ プリンシパルに割り当てる必要はありません。 ACL では、ご自分のセキュリティ プリンシパルには、ターゲット ディレクトリの書き込みアクセス許可と、コンテナーおよび各親ディレクトリの実行アクセス許可が必要になります。 詳細については、「Azure Data Lake Storage のアクセス制御モデル」を参照してください。

環境変数を使用して承認する

アクセスを承認するには、メモリ内環境変数を設定します。 次に、任意の AzCopy コマンドを実行します。 AzCopy は、操作を完了するために必要な認証トークンを取得します。 操作が完了すると、トークンがメモリから消えます。

AzCopy は、ユーザーが指定した資格情報を使って OAuth トークンを取得します。 または、AzCopy は、Azure CLI または Azure PowerShell のアクティブなセッションの OAuth トークンを使うこともできます。

このオプションは、ユーザーの操作なしで実行されるスクリプト内で AzCopy を使用する予定で、スクリプトが Azure 仮想マシン (VM) から実行される場合に最適です。 このオプションを使用する場合、VM に資格情報を格納する必要はありません。

アカウントにサインインするには、VM で有効にするシステム全体のマネージド ID を使用するか、VM に割り当てたユーザー割り当てマネージド ID のクライアント ID、オブジェクト ID、またはリソース ID を使用します。

システム全体のマネージド ID を有効にする方法、またはユーザー割り当てのマネージド ID を作成したりする方法について詳しくは、「Azure portal を使用して Azure VM で Azure リソースのマネージド ID を構成する」をご覧ください。

システム全体のマネージド ID を使用して承認する

まず、VM でシステム全体のマネージド ID を有効にしてください。 詳細については、「 システム割り当てマネージド ID」を参照してください。

次のコマンドを入力して、Enter キーを押します。

export AZCOPY_AUTO_LOGIN_TYPE=MSI

次に、azcopy コマンドを実行します。 たとえば、 azcopy list https://contoso.blob.core.windows.netと指定します。

ユーザー割り当てのマネージド ID を使用して承認する

まず、VM でユーザー割り当てマネージド ID を有効にします。 詳細については、「 ユーザー割り当てマネージド ID」を参照してください。

次のコマンドを入力して、Enter キーを押します。

export AZCOPY_AUTO_LOGIN_TYPE=MSI

次に、ユーザー割り当てマネージド ID のクライアント ID、オブジェクト ID、またはリソース ID の環境変数を設定します。

クライアント ID を使用する

クライアント ID を使用して承認するには、次のコマンドを入力し、Enter キーを押します。

export AZCOPY_MSI_CLIENT_ID=<client-id>

<client-id> プレースホルダーは、ユーザー割り当てのマネージド ID のクライアント ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でクライアント ID を見つけることができます。 次のスクリーンショットは、クライアント ID プロパティの場所を示しています。

クライアント ID の場所を示すスクリーンショット。

オブジェクト ID を使用する

オブジェクト ID を使用して承認するには、次のコマンドを入力し、Enter キーを押します。

export AZCOPY_MSI_OBJECT_ID=<object-id>

<object-id> プレースホルダーは、ユーザー割り当てのマネージド ID のオブジェクト ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でオブジェクト ID を見つけることができます。 次のスクリーンショットは、オブジェクト ID ( プリンシパル ID とも呼ばれます) の場所を示しています。

オブジェクト ID の場所を示すスクリーンショット。

リソース ID を使用する

リソース ID を使用して承認するには、次のコマンドを入力し、Enter キーを押します。

export AZCOPY_MSI_RESOURCE_STRING=<resource-id>

<resource-id> プレースホルダーは、ユーザー割り当てのマネージド ID のリソース ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でリソース ID を見つけることができます。 次のスクリーンショットは、リソース ID プロパティの場所を示しています。

リソース ID の場所を示すスクリーンショット。

AzCopy 認証ログイン コマンドを使用して承認する

メモリ内変数を使用する代わりに、 azcopy login コマンドを使用してアクセスを承認します。

azcopy login コマンドによって OAuth トークンが取得され、そのトークンがシステムのシークレット ストアに配置されます。 オペレーティング システムに Linux キーリングなどのシークレット ストアがない場合、トークンを配置する場所がないため、azcopy 認証ログイン コマンドは機能しません。

システム全体のマネージド ID を使用して承認する

まず、VM でシステム全体のマネージド ID を有効にしてください。 詳細については、「 システム割り当てマネージド ID」を参照してください。

次に、コマンド コンソールで、次のコマンドを入力して Enter キーを押します。

azcopy login --identity

ユーザー割り当てマネージド ID を使用して承認する

まず、VM でユーザー割り当てマネージド ID を有効にします。 詳細については、「 ユーザー割り当てマネージド ID」を参照してください。 次に、ユーザー割り当てマネージド ID のクライアント ID、オブジェクト ID、またはリソース ID を使用してサインインします。

クライアント ID を使用してサインインする

次のコマンドを入力して、Enter キーを押します。

azcopy login --identity --identity-client-id "<client-id>"

<client-id> プレースホルダーは、ユーザー割り当てのマネージド ID のクライアント ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でクライアント ID を見つけることができます。 次のスクリーンショットは、クライアント ID プロパティの場所を示しています。

クライアント ID の場所を示すスクリーンショット

オブジェクト ID を使用してサインインする

次のコマンドを入力して、Enter キーを押します。

azcopy login --identity --identity-object-id "<object-id>"

<object-id> プレースホルダーは、ユーザー割り当てのマネージド ID のオブジェクト ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でオブジェクト ID を見つけることができます。 次のスクリーンショットは、オブジェクト ID ( プリンシパル ID とも呼ばれます) の場所を示しています。

オブジェクト ID の場所を示すスクリーンショット

リソース ID を使用してサインインする

次のコマンドを入力して、Enter キーを押します。

azcopy login --identity --identity-resource-id "<resource-id>"

<resource-id> プレースホルダーは、ユーザー割り当てのマネージド ID のリソース ID に置き換えます。

マネージド ID のプロパティを表示することで、Azure portal でリソース ID を見つけることができます。 次のスクリーンショットは、リソース ID プロパティの場所を示しています。

リソース ID の場所を示すスクリーンショット

Azure CLI を使用して認可を行う

Azure CLI を使用してサインインすると、Azure CLI は、AzCopy が操作の承認に使用する OAuth トークンを取得します。

AzCopy がそのトークンを使用できるようにするには、次のコマンドを入力し、 Enter キーを押します。

export AZCOPY_AUTO_LOGIN_TYPE=AZCLI
export AZCOPY_TENANT_ID=<tenant-id>

Azure CLI を使用してサインインする方法の詳細については、「Azure CLI を使用して マネージド ID を使用して Azure にサインインする」を参照してください。

Azure PowerShell を使用して認可を行う

Azure PowerShell を使用してサインインすると、Azure PowerShell は、AzCopy が操作の承認に使用できる OAuth トークンを取得します。

AzCopy がそのトークンを使用できるようにするには、次のコマンドを入力し、 Enter キーを押します。

$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"
$Env:AZCOPY_TENANT_ID="<tenant-id>"

Azure PowerShell を使用してサインインする方法の詳細については、「マネージド ID を使用した ログイン」を参照してください。

次のステップ

  • AzCopy の詳細については、「 AzCopy の概要」を参照してください。

  • 質問がある場合、問題が発生した場合、または一般的なフィードバックがある場合は、 GitHub で送信してください。