さまざまなクライアントのオンプレミスハードウェアで実行されるNodeJSアプリケーションを構築しています。そのアプリケーションでAzureストレージテーブルにデータをログに記録したいと思います。(将来、アプリケーションは他のAzureサービスを使用する必要があるかもしれません。)アプリケーションのさまざまなインスタンスにテーブルへのアクセスを許可するにはどうすればよいですか?
それぞれの異なるクライアントを異なるテーブルに制限し、追加と読み取りのアクセスのみを使用して、更新や削除を行わないようにしたいと思います。
必要に応じて、他のクライアントに影響を与えることなく、単一のクライアントのアクセスを即座に取り消すことができるようにしたいと思います。
私は3つのオプションを検討しました:
クライアントごとに個別のストレージアカウントを作成し、クライアントにそのアカウントのアクセスキーを与えることを検討しました。ただし、これによりフルアクセス(更新と削除を含む)が提供されます。
クライアントごとに保存アクセスポリシー(SAP)を作成してから、ポリシーに共有アクセス署名(SAS)を作成することを検討しました。クライアントは、共有アクセス署名(ここで説明)を使用して接続できます。これに見られる主な欠点は、クライアントのアプリケーションが複数のテーブルにアクセスできるようにする場合、テーブルごとに個別のSAPとSASが必要になることです。これにより、管理オーバーヘッドが追加されます。
アプリはIDの別の形式であるため、ソフトウェアのインスタンスごとにIDを作成するためにアプリを登録することを検討しました。しかし、(a)アプリケーションにAzureストレージに資格情報を渡すようにする方法、または(b)アプリに読み取り/テーブルに追加する権限を付与する方法がわかりませんでした。
AWSでは、IAMユーザーを作成することでこの問題を解決しました。キーは、環境変数を介してノードJSコードにアクセスできるようになります。
しかし、Azureでは、私の組織にはActive Directoryがあり、私はそのディレクトリの管理者ではありません。管理者でなくてもテーブルにアクセスする目的でAzureユーザーを作成する方法がわかりません。
誰か考えやアドバイスはありますか?
あなたが言ったように、各テーブルにはSASトークンはありません。あなたの場合、フルアクセスではなくSASトークンを使用してクライアントごとに個別のストレージアカウントを指定することをお勧めします。
現在、Azureテーブルへの認証アクセスはサポートされていません。Azure AD統合は、プレビューでのみBlobサービスとQueueサービスで使用できます。
Azure Active Directory(プレビュー)を使用したAzure BLOBおよびキューへのアクセスの認証の詳細については、Azureの公式ドキュメントを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加