이 문서에서는 UNITY 카탈로그에서 스토리지 자격 증명을 만들어 AWS S3에 연결하는 방법을 설명합니다. Azure Databricks에서 S3에 대한 지원은 읽기 전용입니다.
스토리지 자격 증명에는 클라우드 스토리지에 대한 액세스 권한이 있는 장기 클라우드 자격 증명이 포함됩니다. Unity 카탈로그에서 외부 위치를 만들어 외부 스토리지에 대한 액세스를 제어할 때 스토리지 자격 증명 및 클라우드 스토리지 경로를 참조합니다.
스토리지 자격 증명 및 외부 위치에 대한 자세한 내용은 Unity 카탈로그를 사용하여 클라우드 개체 스토리지에 연결을 참조하세요.
Unity 카탈로그에서 지원하는 다른 클라우드 스토리지 옵션에 대한 자세한 내용은 Unity 카탈로그에서 지원하는 클라우드 스토리지 옵션을 참조하세요.
비고
클라우드 간 데이터 전송 요금이 적용될 수 있습니다. 서버리스 컴퓨팅을 사용하는 경우 Databricks 데이터 전송 및 연결 정책에 따라 요금이 청구됩니다.
스토리지 자격 증명 만들기
S3 버킷에 액세스하기 위한 스토리지 자격 증명을 만들려면 S3 버킷 경로에 대한 액세스 권한을 부여하고 스토리지 자격 증명 정의에서 IAM 역할을 참조하는 AWS IAM 역할을 만듭니다.
요구 사항
Azure Databricks에서:
- Unity 카탈로그에 사용할 수 있는 Azure Databricks 작업 영역입니다.
- 작업 영역에 연결된 Unity 카탈로그 메타스토어에 대한
CREATE STORAGE CREDENTIAL
권한 계정 관리자 및 메타스토어 관리자는 기본적으로 이러한 권한을 가집니다.
AWS 계정에서:
다음 요구 사항을 충족하는 S3 버킷입니다.
- S3 버킷 이름에는 점 표기법(예:
incorrect.bucket.name.notation
)을 사용하지 마세요. AWS는 버킷 이름에 점을 허용하지만 Azure Databricks는 점 표기법이 있는 S3 버킷을 지원하지 않습니다. 점이 포함된 버킷은 SSL 인증서 유효성 검사 실패로 인해 델타 공유와 같은 기능과의 호환성 문제를 일으킬 수 있습니다. 자세한 내용은 AWS 버킷 명명 모범 사례를 참조하세요. - 버킷에는 S3 액세스 제어 목록을 부착할 수 없습니다.
- S3 버킷 이름에는 점 표기법(예:
IAM 역할을 만드는 기능입니다.
1단계: IAM 역할 만들기
AWS에서 사용자가 액세스하려는 S3 버킷에 대한 액세스를 제공하는 IAM 역할을 만듭니다. 이 IAM 역할은 S3 버킷과 동일한 계정에 정의되어야 합니다.
팁 (조언)
이 액세스를 제공하는 IAM 역할을 이미 만든 경우 이 단계를 건너뛰고 2단계로 바로 이동하여 Azure Databricks에 IAM 역할 세부 정보를 제공할 수 있습니다.
S3 버킷에 대한 액세스를 허용하는 IAM 역할을 만듭니다.
역할 만들기는 2단계 프로세스입니다. 이 단계에서는 역할을 만들고, Azure Databricks에서 스토리지 자격 증명을 만든 후 수정하는 임시 트러스트 관계 정책과 자리 표시자 외부 ID를 추가합니다.
역할을 자체 가정해야 하므로 역할을 만든 후 신뢰 정책을 수정해야 합니다(즉, 자체 신뢰하도록 구성해야 함). 따라서 자체 가정 문을 추가하기 전에 역할이 있어야 합니다. 자체 가정 역할에 대한 자세한 내용은 이 Amazon 블로그 문서를 참조하세요.
중요합니다
Databricks는 자체 가정이 아닌 IAM 역할에 따라 새 스토리지 자격 증명과 기존 스토리지 자격 증명을 차단합니다. 자세한 내용은 자체 역할 설정 정책을 참조하세요.
정책을 만들려면 플레이스홀더 외부 ID를 사용해야 합니다.
사용자 지정 신뢰 정책을 사용하여 IAM 역할을 만듭니다.
사용자 지정 신뢰 정책 필드에 다음 정책 JSON을 붙여넣습니다.
이 정책은 Unity 카탈로그가 Databricks 사용자를 대신하여 버킷의 데이터에 액세스하는 역할을 맡을 수 있도록 계정 간 트러스트 관계를 설정합니다.
Principal
섹션에서 ARN에 의해 지정됩니다. Databricks에서 만든 역할을 참조하는 정적 값입니다.정책은 외부 ID를
0000
자리 표시자로 설정합니다. 이후 단계에서 스토리지 자격 증명의 외부 ID로 업데이트합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q"] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "0000" } } } ] }
권한 정책 구성을 건너뜁니다. 나중에 추가하기 위해 다시 돌아갈 것입니다.
IAM 역할을 저장합니다.
다음 값을 대체하여 S3 버킷과 동일한 계정에 다음 IAM 정책을 만듭니다.
-
<BUCKET>
: S3 버킷의 이름입니다. -
<KMS-KEY>
: 선택 사항입니다. 암호화를 사용하는 경우 S3 버킷 콘텐츠를 암호화하는 KMS 키의 이름을 제공합니다. 암호화를 사용하지 않도록 설정하면 IAM 정책의 전체 KMS 섹션을 제거합니다. -
<AWS-ACCOUNT-ID>
: AWS 계정의 계정 ID입니다(Databricks 계정이 아님). -
<AWS-IAM-ROLE-NAME>
: 이전 단계에서 만든 AWS IAM 역할의 이름입니다.
이 IAM 정책은 읽기 및 쓰기 권한을 부여합니다. 읽기 권한만 부여하는 정책을 만들 수도 있습니다. 그러나 스토리지 자격 증명을 읽기 전용으로 표시할 수 있고 이 IAM 역할에서 부여한 쓰기 액세스는 무시되므로 필요하지 않을 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": ["arn:aws:s3:::<BUCKET>/*", "arn:aws:s3:::<BUCKET>"], "Effect": "Allow" }, { "Action": ["kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*"], "Resource": ["arn:aws:kms:<KMS-KEY>"], "Effect": "Allow" }, { "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::<AWS-ACCOUNT-ID>:role/<AWS-IAM-ROLE-NAME>"], "Effect": "Allow" } ] }
비고
Unity 카탈로그에 대한 보다 제한적인 IAM 정책이 필요한 경우 Azure Databricks 계정 팀에 문의하여 도움을 요청하세요.
-
S3 버킷과 동일한 계정의 파일 이벤트에 대한 IAM 정책을 만듭니다.
비고
이 단계는 선택 사항이지만 권장됩니다. 사용자 대신 파일 이벤트를 구성하기 위해 Azure Databricks 액세스 권한을 부여하지 않는 경우 각 위치에 대해 파일 이벤트를 수동으로 구성해야 합니다. 그렇지 않은 경우 Databricks가 나중에 릴리스할 수 있는 중요한 기능에 대한 액세스가 제한됩니다. 파일 이벤트에 대한 자세한 내용은 외부 위치에 대한 파일 이벤트 사용(권장)을 참조하세요.
IAM 정책은 Azure Databricks에 버킷의 이벤트 알림 구성을 업데이트하고, SNS 토픽을 만들고, SQS 큐를 만들고, SQS 큐를 SNS 토픽에 구독할 수 있는 권한을 부여합니다. 이러한 리소스는 파일 이벤트를 사용하는 기능에 필요한 리소스입니다.
<BUCKET>
을(를) S3 버킷의 이름으로 바꾸십시오.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManagedFileEventsSetupStatement", "Effect": "Allow", "Action": [ "s3:GetBucketNotification", "s3:PutBucketNotification", "sns:ListSubscriptionsByTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:CreateTopic", "sns:TagResource", "sns:Publish", "sns:Subscribe", "sqs:CreateQueue", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueUrl", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes", "sqs:TagQueue", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsListStatement", "Effect": "Allow", "Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] }, { "Sid": "ManagedFileEventsTeardownStatement", "Effect": "Allow", "Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"], "Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"] } ] }
IAM 정책을 IAM 역할에 연결합니다.
역할의 사용 권한 탭에서 방금 만든 IAM 정책을 연결합니다.
2단계: Azure Databricks에 IAM 역할 세부 정보 제공
Azure Databricks에서 Unity 카탈로그 메타스토어에 연결된 작업 영역에 로그인합니다.
권한이 있어야 합니다
CREATE STORAGE CREDENTIAL
. metastore 관리자 및 계정 관리자 역할에는 모두 이 권한이 포함됩니다.을 클릭합니다.카탈로그.
빠른 액세스 페이지에서 외부 데이터 > 단추를 클릭하고 자격 증명 탭으로 이동하여 자격 증명 만들기를 선택합니다.
AWS IAM 역할의 자격 증명 유형을 선택합니다.
자격 증명의 이름, 클라우드 테넌트에서 스토리지 위치에 액세스하도록 Unity 카탈로그에 권한을 부여하는 IAM 역할 ARN 및 선택적 주석을 입력합니다.
(선택 사항) 사용자가 이 스토리지 자격 증명을 사용하는 외부 위치에 대한 읽기 전용 액세스 권한을 갖도록 하려면 고급 옵션에서 읽기 전용선택할 있습니다. 자세한 내용은 스토리지 자격 증명을 읽기 전용으로 표시를 참조하세요.
비고
Azure Databricks는 스토리지 자격 증명을 사용하여 S3 버킷에 대한 읽기 전용 액세스만 제공하므로 이 옵션을 설정할 필요가 없습니다.
만들기를 클릭합니다.
스토리지 자격 증명 생성 대화 상자에서 외부 ID를 복사합니다.
완료를 클릭합니다.
(선택 사항) 스토리지 자격 증명을 특정 작업 영역에 바인딩합니다.
기본적으로 권한 있는 사용자는 메타스토어에 연결된 모든 작업 영역에서 스토리지 자격 증명을 사용할 수 있습니다. 특정 작업 영역에서만 액세스를 허용하려면 작업 영역 탭으로 이동하여 작업 영역을 할당합니다. (선택 사항) 특정 작업 영역에 스토리지 자격 증명 할당을 참조하세요.
Databricks Terraform 공급자 및 databricks_storage_credential을 사용하여 스토리지 자격 증명을 만들 수도 있습니다.
3단계: IAM 역할 신뢰 관계 정책 업데이트
AWS에서 스토리지 자격 증명의 외부 ID를 추가하고 자체 가정하도록 트러스트 관계 정책을 수정합니다.
저장된 IAM 역할로 돌아가서 트러스트 관계 탭으로 이동합니다.
다음과 같이 트러스트 관계 정책을 편집합니다.
다음 ARN을 "Allow" 문에 추가합니다.
<YOUR-AWS-ACCOUNT-ID>
와<THIS-ROLE-NAME>
를 실제 계정 ID와 IAM 역할 값으로 교체하십시오."arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
"sts:AssumeRole"
명령문에서 자리 표시자 외부 ID를 이전 단계에서 복사한 스토리지 자격 증명의 외부 ID로 업데이트하세요."sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>"
이제 정책은 다음과 같이 표시되고 스토리지 자격 증명의 외부 ID, 계정 ID 및 IAM 역할 값을 사용하도록 대체 텍스트가 업데이트됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCAzureMainRole-1AJ6UQSSB8F0Q", "arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE-CREDENTIAL-EXTERNAL-ID>" } } } ] }
4단계: 스토리지 자격 증명의 유효성 검사
3단계: IAM 역할 신뢰 관계 정책 업데이트에서 IAM 역할 신뢰 정책을 변경한 후 IAM 역할이 스토리지 자격 증명으로 사용하도록 올바르게 구성되었는지 확인합니다.
비고
구성의 유효성을 검사하려면 스토리지 자격 증명 소유자, 메타스토어 관리자 또는 CREATE EXTERNAL LOCATION
스토리지 자격 증명에 대한 권한이 있어야 합니다.
Azure Databricks에서 메타스토어에 연결된 작업 영역에 로그인합니다.
을 클릭합니다.카탈로그.
빠른 액세스 페이지에서 외부 데이터 > 단추를 클릭하고 자격 증명 탭으로 이동합니다.
또는
을 클릭할 수 있습니다. 카탈로그 창 맨 위에 있는 기어 아이콘을 선택하고 자격 증명을 선택합니다.
유효성을 검사할 스토리지 자격 증명을 선택합니다.
클릭합니다.
검사 중 하나라도 실패하면 3단계로 돌아갑니다. IAM 역할 신뢰 관계 정책을 업데이트 하고 IAM 역할의 신뢰 정책을 검토하여 올바르게 구성합니다.
스토리지 자격 증명의 유효성이 검사되면 이를 사용하여 외부 위치를 만들 수 있습니다.
자체 지정 역할 시행 정책
2023년 6월 30일 AWS는 IAM 역할 신뢰 정책을 업데이트 하여 IAM 역할이 호출에 대해 STS:AssumeRole
명시적으로 자체 신뢰하도록 요구했습니다. 따라서 Databricks는 스토리지 자격 증명에 대한 AWS IAM 역할을 자체 가정해야 합니다. 자세한 내용은 이 커뮤니티 블로그 게시물을 참조하세요.
2025년 1월 20일, Databricks는 자체 가정이 아닌 IAM 역할로 기존 스토리지 자격 증명의 사용을 차단하기 시작했습니다. 이러한 금지는 자체 가정이 아닌 자격 증명을 사용하여 실행되는 워크로드 및 작업을 중단할 수 있습니다.
스토리지 자격 증명에 대한 AWS IAM 역할이 자체 가정인지 확인하려면 4단계의 지침에 따라 스토리지 자격 증명의 유효성을 검사합니다. 자체 역할 가정 검사가 실패하는 경우, 3단계: IAM 역할 신뢰 관계 정책 업데이트 항목으로 돌아가 IAM 역할의 신뢰 정책을 자체 역할을 신뢰하도록 재구성하십시오.
확인하려는 메타스토어에 여러 스토리지 자격 증명이 있는 경우 다음 Notebook을 사용하여 메타스토어에 있는 모든 스토리지 자격 증명의 자체 가정 기능을 확인합니다.
자가 인식 스토리지 자격 증명 확인 기록장
(선택 사항) 특정 작업 영역에 스토리지 자격 증명 할당
기본적으로 메타스토어의 모든 작업 영역에서 스토리지 자격 증명에 액세스할 수 있습니다. 즉, 사용자에게 해당 스토리지 자격 증명에 대한 권한(예: CREATE EXTERNAL LOCATION
)이 부여된 경우 metastore에 연결된 모든 작업 영역에서 해당 권한을 행사할 수 있습니다. 작업 영역을 사용하여 사용자 데이터 액세스를 격리하는 경우 특정 작업 영역에서만 스토리지 자격 증명에 대한 액세스를 허용할 수 있습니다. 이 기능을 작업 영역 바인딩 또는 스토리지 자격 증명 격리라고 합니다. 지침은 (선택 사항) 특정 작업 영역에 스토리지 자격 증명 할당을 참조하세요.
제한점
- 서버리스 송신 제어를 사용하는 작업 영역에서는 네트워크 정책 API를 사용하여 AWS S3 버킷에 대한 플랫폼 간 액세스를 구성해야 합니다.
다음 단계
스토리지 자격 증명을 사용할 수 있는 권한을 다른 사용자에게 보고, 업데이트하고, 삭제하고, 부여합니다. 스토리지 자격 증명 관리를 참조하세요.
스토리지 자격 증명을 사용하여 외부 위치를 정의합니다. 클라우드 스토리지를 Azure Databricks에 연결하기 위한 외부 위치 생성 방법을 참조하세요.