다음을 통해 공유


Azure CLI를 사용한 Azure Data Lake Storage Gen2의 ACL 관리

이 문서에서는 Azure CLI를 사용하여 디렉터리 및 파일의 액세스 제어 목록을 가져오고, 설정하고, 업데이트하는 방법을 보여 줍니다.

부모 디렉터리 아래에 만들어진 새 자식 항목에서는 이미 ACL 상속을 사용할 수 있는 상태입니다. 그러나 각 자식 항목을 개별적으로 변경할 필요 없이 부모 디렉터리의 기존 자식 항목에서 ACL을 재귀적으로 추가, 업데이트, 제거할 수도 있습니다.

참조 | 샘플 | 피드백 제공

필수 구성 요소

  • Azure 구독 자세한 내용은 Azure 무료 평가판 가져오기 를 참조하세요.

  • 계층 구조 네임스페이스가 사용하도록 설정된 스토리지 계정입니다. 이러한 지침에 따라 라이브러리를 만듭니다.

  • Azure CLI 버전 2.14.0 이상.

  • 다음 보안 권한 중 하나입니다.

    • 대상 컨테이너, 스토리지 계정, 부모 리소스 그룹 또는 구독으로 범위가 할당된 Storage Blob 데이터 소유자 역할이 할당된 프로비전된 Microsoft Entra ID 보안 주체입니다.

    • ACL 설정을 적용하려는 대상 컨테이너 또는 디렉터리를 소유하는 담당 사용자. ACL을 재귀적으로 설정하기 위해 대상 컨테이너 또는 디렉터리의 모든 자식 항목을 포함합니다.

    • 스토리지 계정 키.

올바른 버전의 Azure CLI를 설치했는지 확인

  1. Azure Cloud Shell을 열거나 Azure CLI를 로컬로 설치한 경우 Windows PowerShell과 같은 명령 콘솔 애플리케이션을 엽니다.

  2. 다음 명령을 사용하여 설치된 Azure CLI 버전이 2.14.0 이상인지 확인합니다.

     az --version
    

    Azure CLI 버전이 2.14.0보다 낮은 경우 이후 버전을 설치합니다. 자세한 내용은 Azure CLI 설치를 참조하세요.

계정에 연결

  1. Azure CLI를 로컬로 사용하는 경우 로그인 명령을 실행합니다.

    az login
    

    CLI는 기본 브라우저를 열 수 있으면 기본 브라우저를 열고 Azure 로그인 페이지를 로드합니다.

    그렇지 않으면 https://aka.ms/devicelogin 에서 브라우저 페이지를 열고 터미널에 표시된 권한 부여 코드를 입력합니다. 그런 다음 브라우저에서 계정 자격 증명으로 로그인합니다.

    다른 인증 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Blob 또는 큐 데이터에 대한 액세스 권한 부여를 참조하세요.

  2. ID가 둘 이상의 구독과 연결된 경우 정적 웹 사이트를 호스트하는 스토리지 계정의 구독으로 활성 구독을 설정합니다.

    az account set --subscription <subscription-id>
    

    <subscription-id> 자리 표시자 값을 구독의 ID로 바꿉니다.

참고 항목

이 문서에 제시된 예는 Microsoft Entra 권한 부여를 보여 줍니다. 권한 부여 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Blob 또는 큐 데이터에 대한 액세스 권한 부여I를 참조하세요.

ACL 가져오기

az storage fs access show 명령을 사용하여 디렉터리의 ACL을 가져옵니다.

이 예제에서는 디렉터리의 ACL을 가져온 후 ACL을 콘솔에 출력합니다.

az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

az storage fs access show 명령을 사용하여 파일의 액세스 권한을 가져옵니다.

이 예제에서는 파일의 ACL을 가져온 후 ACL을 콘솔에 출력합니다.

az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

다음 이미지는 디렉터리의 ACL을 가져온 후 출력을 보여 줍니다.

Get ACL output

이 예제에서 소유 사용자에게 읽기, 쓰기 및 실행 권한이 있습니다. 소유 그룹에는 읽기 및 실행 권한만 있습니다. 액세스 제어 목록에 대한 자세한 내용은 Azure Data Lake Storage Gen2의 액세스 제어를 참조하세요.

ACL 설정

ACL을 설정하는 경우 모든 항목을 포함하여 전체 ACL을 바꿉니다. 보안 주체의 권한 수준을 변경하거나 다른 기존 항목에 영향을 주지 않고 ACL에 새 보안 주체를 추가하려면 대신 ACL을 업데이트해야 합니다. ACL을 바꾸는 대신 업데이트하려면 이 문서의 ACL 업데이트 섹션을 참조하세요.

ACL을 설정하도록 선택한 경우 소유 사용자에 대한 항목, 소유 그룹에 대한 항목, 다른 모든 사용자에 대한 항목을 추가해야 합니다. 소유 사용자, 소유 그룹, 다른 모든 사용자에 대한 자세한 내용은 사용자 및 ID를 참조하세요.

이 섹션에서는 다음 방법을 보여줍니다.

  • ACL 설정
  • 반복적으로 ACL 설정

ACL 설정

az storage fs access set 명령을 사용하여 디렉터리의 ACL을 설정합니다.

다음 예제에서는 디렉터리의 소유 사용자, 소유 그룹 또는 기타 사용자에 대한 ACL을 설정하고 콘솔에 해당 ACL을 출력합니다.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

이 예재에서는 디렉터리의 소유 사용자, 소유 그룹 또는 기타 사용자에 대한 기본 ACL을 설정하고 콘솔에 해당 ACL을 출력합니다.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

az storage fs access set 명령을 사용하여 파일의 acl을 설정합니다.

다음 예제에서는 파일의 소유 사용자, 소유 그룹 또는 기타 사용자에 대한 ACL을 설정하고 콘솔에 해당 ACL을 출력합니다.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

참고 항목

특정 그룹 또는 사용자의 ACL을 보려면 해당 개체 ID를 사용합니다. 예를 들어, 그룹의 ACL을 설정하려면 group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx를 사용합니다. 사용자의 ACL을 설정하려면 user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx를 사용합니다.

다음 이미지는 파일의 ACL을 설정한 후 출력을 보여 줍니다.

Get ACL output 2

다음 예제에서는 소유 사용자 및 소유 그룹에 읽기 및 쓰기 권한만 있습니다. 다른 모든 사용자에게는 쓰기 및 실행 권한이 있습니다. 액세스 제어 목록에 대한 자세한 내용은 Azure Data Lake Storage Gen2의 액세스 제어를 참조하세요.

반복적으로 ACL 설정

az storage fs access set-recursive 명령을 사용하여 ACL을 재귀적으로 설정합니다.

다음 예시에서는 my-parent-directory라는 디렉터리의 ACL을 설정합니다. 이러한 항목은 소유 사용자에게 읽기, 쓰기 및 실행 권한을 부여하고, 소유 그룹에는 읽기 및 실행 권한만 부여하고, 다른 모든 사용자에게는 액세스 권한을 부여하지 않습니다. 이 예제의 마지막 ACL 항목은 개체 ID가 “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”인 특정 사용자에 읽기와 실행 권한을 부여합니다.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

참고 항목

기본 ACL 항목을 설정하려면 각 항목에 default: 접두사를 추가합니다. 예를 들어 default:user::rwx 또는 default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x입니다.

ACL 업데이트

ACL을 업데이트할 때 ACL을 바꾸는 대신 ACL을 수정합니다. 예를 들어 ACL에 나열된 다른 보안 주체에 영향을 주지 않고 ACL에 새 보안 주체를 추가할 수 있습니다. ACL을 업데이트하지 않고 바꾸려면 이 문서의 ACL 설정 섹션을 참조하세요.

ACL을 업데이트하려면 업데이트하려는 ACL 항목으로 새 ACL 객체를 만든 다음, ACL 업데이트 작업에 이 개체를 사용합니다. 기존 ACL을 가져오지 않고 업데이트할 ACL 항목만 제공합니다.

이 섹션에서는 다음 방법을 보여줍니다.

  • ACL 업데이트
  • 재귀적으로 ACL 업데이트

ACL 업데이트

az storage fs access update-recursive 명령을 사용하여 파일의 ACL을 업데이트합니다.

이 예시에서는 쓰기 권한이 있는 ACL 항목을 업데이트합니다.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

특정 그룹 또는 사용자의 ACL을 업데이트하려면 해당 개체 ID를 사용합니다. 예를 들어 group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 또는 user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx입니다.

참고 항목

자식 항목의 ACL을 업데이트하지 않고 단일 디렉터리의 ACL을 업데이트하는 것은 Azure CLI에서 지원되지 않습니다. 해당 디렉터리에 있는 모든 자식 항목의 ACL을 수정하지 않고 디렉터리의 ACL을 업데이트하려면 지원되는 다른 도구 및 SDK를 사용합니다. ACL 설정 방법을 참조하세요.

재귀적으로 ACL 업데이트

az storage fs access update-recursive 명령을 사용하여 ACL을 재귀적으로 업데이트합니다.

이 예시에서는 쓰기 권한이 있는 ACL 항목을 업데이트합니다.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

참고 항목

기본 ACL 항목을 업데이트하려면 각 항목에 default: 접두사를 추가합니다. 예: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

ACL 항목의 재귀적 제거

하나 이상의 ACL 항목을 재귀적으로 제거할 수 있습니다. ACL 항목을 제거하려면 제거할 ACL 항목에 대해 새 ACL 개체를 만든 다음, ACL 제거 작업에 이 개체를 사용합니다. 기존 ACL을 가져오지 않고 제거할 ACL 항목만 제공합니다.

az storage fs access remove-recursive 명령을 사용하여 ACL 항목을 제거합니다.

이 예제에서는 컨테이너의 루트 디렉터리에서 ACL 항목을 제거합니다.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

참고 항목

기본 ACL 항목을 제거하려면 각 항목에 default: 접두사를 추가합니다. 예: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

오류에서 복구

ACL을 재귀적으로 수정할 때 런타임 또는 권한 오류가 발생할 수 있습니다. 런타임 오류의 경우 처음부터 프로세스를 다시 시작합니다. 수정되는 디렉터리 계층 구조에 있는 디렉터리 또는 파일의 ACL을 수정할 수 있는 권한이 보안 주체에게 없는 경우에 권한 오류가 발생할 수 있습니다. 권한 문제를 해결한 다음 연속 토큰을 사용하여 오류 지점에서 프로세스를 다시 시작하거나 프로세스를 처음부터 다시 시작하도록 선택합니다. 처음부터 다시 시작하기를 선호하는 경우 연속 토큰을 사용할 필요는 없습니다. 부정적인 영향 없이 ACL 항목을 다시 적용할 수 있습니다.

오류가 발생하는 경우 --continue-on-failure 매개 변수를 false로 설정하여 연속 토큰을 반환할 수 있습니다. 오류를 해결한 후 명령을 다시 실행한 다음, --continuation 매개 변수를 연속 토큰으로 설정하여 오류 발생 지점에서 프로세스를 다시 시작할 수 있습니다.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

권한 오류가 발생해도 프로세스가 중단 없이 완료되도록 하기 위해 이를 지정할 수 있습니다.

프로세스가 중단 없이 완료되게 하려면 --continue-on-failure 매개 변수를 true로 설정합니다.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

모범 사례

이 섹션에서는 ACL을 재귀적으로 설정하는 몇 가지 모범 사례를 제공합니다.

런타임 오류 처리

런타임 오류는 여러 가지 이유(예: 중단 또는 클라이언트 연결 문제)로 발생할 수 있습니다. 런타임 오류가 발생하는 경우 재귀 ACL 프로세스를 다시 시작하세요. 부정적인 영향 없이 항목에 ACL을 다시 적용할 수 있습니다.

권한 오류 처리(403)

재귀 ACL 프로세스를 실행하는 동안 액세스 제어 예외가 발생하는 경우 디렉터리 계층 구조에 있는 하나 이상의 자식 항목에 ACL을 적용하는 데 충분한 권한이 AD 보안 주체에게 없을 수 있습니다. 권한 오류가 발생하면 프로세스가 중지되고 연속 토큰이 제공됩니다. 권한 문제를 해결한 다음 연속 토큰을 사용하여 나머지 데이터 세트를 처리하세요. 이미 성공적으로 처리된 디렉터리와 파일은 다시 처리하지 않아도 됩니다. 재귀 ACL 프로세스를 다시 시작하도록 선택할 수도 있습니다. 부정적인 영향 없이 항목에 ACL을 다시 적용할 수 있습니다.

자격 증명

대상 스토리지 계정 또는 컨테이너 범위에서 Storage Blob 데이터 소유자 역할이 할당된 Microsoft Entra 보안 주체를 프로비전하는 것이 좋습니다.

성능

대기 시간을 줄이려면 스토리지 계정과 동일한 지역에 있는 Azure VM(가상 머신)에서 재귀 ACL 프로세스를 실행하는 것이 좋습니다.

ACL 한도

디렉터리 또는 파일에 적용할 수 있는 최대 ACL 수는 액세스 ACL 32개 및 기본 ACL 32개입니다. 자세한 내용은 Azure Data Lake Storage Gen2의 액세스 제어를 참조하세요.

참고 항목