Azure Data Lake Storage Gen2(以下ADLS)のACLでアクセス制御を設定したい場合、マスクに対する権限設定が必要になってきます。
マスクの権限についてどのような権限設定が必要なのか試してみました。
※ なお、ADLSに対して、IAMで何も権限を付与していない前提で説明します。
マスクとは
ADLSでは、マスクによって、名前付きユーザー(以下ユーザー)・所有グループ・および名前付きグループのアクセスが制限されます。
例えば、ユーザーがあるパスに対して「読み取り」、「書き込み」、「実行」権限を持っていたとします。
同じパスに対して、マスクに対して何も権限が付与されていない場合は、そのパスに対してユーザーが読み取りも書き込みもできない状態になります。
一方で、マスクに「読み取り」、「書き込み」、「実行」を与えてあげると、ユーザーはそのパスに対して、読み取りやファイルの書き込みができるようになります。
このように、各ユーザーやグループに対してのACLの権限設定だけでなく、マスクに対しても権限を設定しておかないと、アクセスが制限されてしまいます。
検証
検証のフォルダー階層構造について
今回は以下の様なフォルダー階層構造で検証を行いました。
パスへのアクセスは、sales-manager01-testというユーザーがtest2というフォルダーにMicrosoft Azure Storage Explorer(以下Storage Explorer)を使用して行います。
なお、コンテナーとtest1ディレクトリには、sales-manager01-testユーザーとマスクに対して実行権限を付与しています。これは、ユーザーが読み込みおよび書き込みのアクセス許可を得るには、コンテナーを含むすべての親フォルダーに対する実行権限を持っている必要があるためです。
マスク権限なしでの書き込み
まず、対象のフォルダーのtest2について権限を設定します。
マスクには何も権限を付与せず、ユーザーには「読み取り」、「書き込み」、「実行」権限を付与しておきます。
ACLを設定したので、実際にアクセス制御がされるのか確認をします。Storage Explorerから対象にユーザーでログインし、対象のパスにアクセスしてみます。
まず、対象のユーザー下の「ストレージアカウント」を右クリックし、「Azure Storageへの接続..」をクリックします。
「ADLS Gen2コンテナーまたはディレクトリ」を選択します。
「OAuthを使用してサインイン」を選択し、「次へ」をクリックします。
「表示名」と「BLOBコンテナーまたはディレクトリのURL」を入力し、「次へ」をクリックします。
「次へ」をクリックします。
接続が完了すると、以下の画面になります。
※ 画面上部に「This request is not authorized to perform this operation using this permission.」とのメッセージが表示されていますが、これは権限がないため、表示されています。
次に、ファイルのアップロードを行い、書き込みができるかどうかを試してみました。
「アップロード」を選択し、「ファイルのアップロード...」をクリックします。
ファイルを選択し、「アップロード」をクリックします。
しかし、下記画面のように、ファイルのアップロード操作は失敗します。
以上が、マスクに権限を付与しなかった場合の動作検証でした。
マスク権限ありでの書き込み
次に、マスクに権限を設定して、アクセスおよび書き込みを行います。
同様にアクセスしてみると、今度は、画面上の方に表示されていた権限不足のメッセージが出ていません。
ファイルを同様にアップロードすると、今度は正常にアップロードすることができました。
まとめ
ADLSのACLのマスクに関する権限について、アクセスやファイルのアップロードについて検証をしました。
ADLSのIAMではなくACLのみで権限を付与する場合は、マスクにも権限が付与されているか注意して設定をする必要があることが分かりました。