カスタム AWS 設定を使用してワークスペースを作成する
これらの手順は、2023 年 11 月 8 日以降に作成されたアカウントに適用されます。 Databricks アカウントが 2023 年 11 月 8 日より前に作成された場合は、「ワークスペースを手動で作成する (既存の Databricks アカウント)」を参照してください。
この記事では、アカウントコンソールとカスタムAWS設定を使用してワークスペースを手動で作成する方法について説明します。 このプロセスは、独自の AWS リソースを作成する場合、または独自の VPC にワークスペースをデプロイする必要がある場合に使用できます。 デプロイのカスタム構成を作成する必要がない場合、Databricks では AWS クイック スタート テンプレートを使用してワークスペースを作成することをお勧めします。
また、アカウント API または Terraformを使用してワークスペースを作成することもできます。
必要条件
この記事の手順を完了するには、次が必要となります。
- Databricks アカウントのアカウント管理者ロール。
- AWS アカウントのプロビジョニング、IAMロール、S3バケットのアクセス許可。
- ワークスペースのリージョンにある AWS アカウントで使用可能な VPC および NAT ゲートウェイ。利用可能なクォータを表示し、引き上げをリクエストするには、 AWS サービスのクォータコンソールを使用します。
カスタム AWS 設定を使用してワークスペースを作成する
- アカウントコンソールに移動し、[ ワークスペース ]アイコンをクリックします。
- 「 ワークスペースの作成」 をクリックし、「 手動」をクリックします 。
- [ ワークスペース名 ]フィールドに、人間にとってわかりやすい名称で、このワークスペースの名前を入力します。ここには、スペースを含めることもできます。
- 「 リージョン 」フィールドで、ワークスペースのネットワークとクラスターのAWSリージョンを選択します。 「 次へ 」をクリックします。
- [ストレージ コンフィギュレーション ] フィールドで、ストレージ コンフィギュレーションを選択または作成します。新しいストレージ構成を作成する場合は、「 ストレージ構成の作成」を参照してください。
- 「 次へ 」をクリックします。
- 資格情報の構成 フィールドで、このワークスペースに使用する資格情報の構成を選択または作成します。新しい認証情報設定を作成する場合は、「 認証情報設定の作成」を参照してください。
- (オプション) 詳細設定 を設定します。 「詳細構成」を参照してください。
- 「 次へ 」をクリックします。
- ワークスペースの詳細を確認し、 [ワークスペースの作成 ] をクリックします。
ストレージ構成を作成する
ストレージ構成手順では、データ、ライブラリ、ログなどの Databricks ワークスペース資産を格納するためのストレージ バケットを作成します。また、 が位置情報にアクセスするために使用するIAM ロールも作成します。Databricks
ステップ 1: S3 バケットを作成する
- 管理者権限を持つユーザーとしてAWSコンソールにログインし、 S3 サービスに移動します。
- 「 バケットを作成 」ボタンをクリックします。
- バケットの名前を入力します。
- Databricks ワークスペースのデプロイに使用する AWS リージョンを選択します。
- 「 バケットを作成 」をクリックします。
- 「 権限 」タブをクリックします。
- 「 バケットポリシー 」セクションで、「 編集 」をクリックします。
- 次のバケットポリシーを追加し、
<BUCKET-NAME>
をバケットの名前に置き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Grant Databricks Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::548125073166:root"
},
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": ["arn:aws:s3:::<BUCKET-NAME>/*", "arn:aws:s3:::<BUCKET-NAME>"],
"Condition": {
"StringEquals": {
"aws:PrincipalTag/DatabricksAccountId": ["7a99b43c-b46c-432b-b0a7-814217701909"]
}
}
},
{
"Sid": "Prevent DBFS from accessing Unity Catalog metastore",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::548125073166:root"
},
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::<BUCKET-NAME>/unity-catalog/*"]
}
]
}
- バケットを保存します。
ステップ 2: カスタム信頼ポリシーを使用して IAMロールを作成する
このIAM ロールと信頼ポリシー は、Databricks S3Databricksユーザーに代わって バケット内のデータにアクセスできるように、アカウント間の信頼関係を確立します。Principal
セクションの ARN は、Databricks によって作成されたロールを参照する静的な値です。ARNを使用するとDatabricks on AWSGovCloud が少し異なります。
-
AWSアカウントで、IAM Custom Trust ポリシー を使用して ロールを作成します。
-
[Custom Trust ポリシー ] フィールドに、次のポリシー JSON貼り付けます。
このポリシーは、プレースホルダーとして外部 ID を
0000
に設定します。これは、後の手順で Databricks アカウントのアカウント ID に更新します。
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws-us-gov:iam::170661010020:role/unity-catalog-prod-UCMasterRole-1DI6DL6ZP26A"]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "0000"
}
}
}
]
}
-
IAMロールを保存します。
ロールを作成したので、その信頼ポリシーを更新して自己引き受けにする必要があります。
-
作成した IAMロールで、[ Trust Relationships ] タブに移動し、次のように信頼関係ポリシーを編集し、
<YOUR-AWS-ACCOUNT-ID>
、<THIS-ROLE-NAME>
、<YOUR-DATABRICKS-ACCOUNT-ID>
の値を置き換えます。
- Databricks on AWS
- Databricks on AWS GovCloud
- Databricks on AWS GovCloud DoD
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
"arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<YOUR-DATABRICKS-ACCOUNT-ID>"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws-us-gov:iam::044793339203:role/unity-catalog-prod-UCMasterRole-1QRFA8SGY15OJ",
"arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<YOUR-DATABRICKS-ACCOUNT-ID>"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws-us-gov:iam::170661010020:role/unity-catalog-prod-UCMasterRole-1DI6DL6ZP26A",
"arn:aws:iam::<YOUR-AWS-ACCOUNT-ID>:role/<THIS-ROLE-NAME>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<YOUR-DATABRICKS-ACCOUNT-ID>"
}
}
}
]
}
-
アクセス許可ポリシーの構成をスキップします。この構成は、後のステップで追加します。
-
IAMロールを保存します。
ステップ 3: 読み取りおよび書き込みアクセスを付与する IAM ポリシーを作成する
-
S3 バケットと同じアカウントに IAM ポリシーを作成し、次の値を置き換えます。
<BUCKET>
:S3バケットの名前。<AWS-ACCOUNT-ID>
:AWSアカウントのアカウントID(Databricksアカウントではありません)。<AWS-IAM-ROLE-NAME>
:前のステップで作成したAWS IAMロールの名前。<KMS-KEY>
(オプション): 暗号化が有効になっている場合は、S3 バケットの内容を暗号化する KMS キーの名前を指定します。 暗号化が無効になっている場合は、IAM ポリシーの KMS セクション全体を削除します。
このIAMポリシーは、読み取りおよび書き込みアクセスを許可します。読み取りアクセスのみを許可するポリシーを作成することもできます。ただし、ストレージ認証情報は読み取り専用としてマークすることが可能であり、このIAMロールによって付与された書き込みアクセスはすべて無視されるため、これは不要な場合があります。
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": "arn:aws:s3:::<BUCKET>/unity-catalog/*"
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": "arn:aws:s3:::<BUCKET>",
"Condition": {
"StringLike": {
"s3:prefix": "unity-catalog/*"
}
}
},
{
"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 Catalogに対してより制限の厳しいIAMポリシーが必要な場合は、Databricksの担当者にお問い合わせください。
- S3 バケットと同じアカウントのファイルイベントに対して、別の IAM ポリシーを作成します。
この手順はオプションですが、強くお勧めします。ユーザーに代わってファイル イベントを構成するための Databricks アクセス権を付与しない場合は、場所ごとにファイル イベントを手動で構成する必要があります。そうしないと、Databricks が将来リリースする重要な機能へのアクセスが制限されます。
IAM ポリシーは、バケットのイベント通知設定の更新、SNS トピックの作成、SQS キューの作成、および SQS キューの SNS トピックへのサブスクライブを行う権限を Databricks に付与します。これらは、ファイルイベントを使用する機能に必要なリソースです。<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:*:*:*", "arn:aws:sns:*:*:*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": "*"
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws:sqs:*:*:*", "arn:aws:sns:*:*:*"]
}
]
}
-
ステップ 2 で作成した IAMロールに戻ります。
-
[Permission ] タブで、作成した IAM ポリシーをアタッチします。
ステップ 4: ストレージ構成を作成する
次に、Databricks アカウントのワークスペース作成フローに戻ります。[ ストレージ ] ステップで、ワークスペースに S3 バケットへのアクセス権を付与するストレージ設定を作成します。
- ストレージ構成の人間が判読できる名前を入力します。
- AWS アカウントで作成した S3 バケットの名前を入力します。
- 手順 2 で作成した ロールの を入力します。ARNIAM
- [ ストレージ認証情報の作成] をクリックして続行します 。
資格情報構成を作成する
資格情報の設定によりDatabricksAWSアカウントでコンピュート リソースを起動するためのアクセス権が付与されます。この手順では、アクセス ポリシーを使用して新しいクロスアカウント IAMロールを作成する必要があります。
ステップ 1: クロスアカウント IAMロールを作成する
- Databricks アカウント ID を取得します。「アカウント ID を確認する」を参照してください。
- 管理者権限を持つユーザーとしてAWSコンソールにログインし、 IAM コンソールに移動します。
- サイドバーの「 ロール 」タブをクリックします。
- 「 ロールの作成 」をクリックします。
- [信頼できるエンティティの種類の選択] で、 [AWSアカウント] タイルをクリックします。
- [別のAWSアカウント] チェックボックスを選択してください。
- 「アカウント ID」フィールドに、 Databricks アカウント ID
414351767826
を入力します。 これは、 アカウントコンソールからコピーしたアカウントIDDatabricks ではありません 。を使用している場合は、 には Databricks on AWSGovCloudDatabricksアカウントID044793339203
AWSGovCloud170661010020
AWSGovCloud、DoDには を使用します 。 - [外部IDが必要] チェックボックスを選択してください。
- [外部ID ]フィールドに、DatabricksアカウントコンソールからコピーしたDatabricksアカウントIDを入力します。
- [次へ] ボタンをクリックします。
- [ 権限の追加 ] ページで、[ 次へ ] ボタンをクリックします。これで 、[名前、確認、作成 ] ページが表示されます。
- 「 ロール名 」フィールドにロール名を入力します。
- 「 ロールの作成 」をクリックします。役割のリストが表示されます。
ステップ 2: アクセスポリシーを作成する
ロールに追加するアクセスポリシーは、Amazon VPC (Virtual Private Cloud) のデプロイタイプによって異なります。Databricksが各アクセス許可をどのように使用するかについては、「IAM Databricksマネージド VPC のアクセス許可 」を参照してください。デプロイメントを説明するポリシーの指示を使用します。
- オプション 1: デフォルト。Databricks が AWS アカウントで作成および設定する 1 つの VPC。これはデフォルトの設定です。
- オプション 2: 顧客管理VPC (デフォルトの制限付き)。 顧客管理VPC と呼ばれる機能を使用して、自分の Databricksで ワークスペースを作成します。VPC
- オプション 3: カスタム制限付きの顧客管理VPC。アカウント ID、VPC ID、AWS リージョン、およびセキュリティグループに対するカスタム制限を使用して、独自の VPC に Databricks ワークスペースを作成します。
オプション 1: デフォルト deployment ポリシー
-
IAM コンソールの [ロール] セクションで、ステップ1で作成したIAMロールをクリックします。
-
[権限を追加] ドロップダウンをクリックし、 [インラインポリシーの作成] を選択します。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
以下のアクセスポリシーをコピー&ペーストしてください:
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1403287045000",
"Effect": "Allow",
"Action": [
"ec2:AllocateAddress",
"ec2:AssignPrivateIpAddresses",
"ec2:AssociateDhcpOptions",
"ec2:AssociateIamInstanceProfile",
"ec2:AssociateRouteTable",
"ec2:AttachInternetGateway",
"ec2:AttachVolume",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CancelSpotInstanceRequests",
"ec2:CreateDhcpOptions",
"ec2:CreateFleet",
"ec2:CreateInternetGateway",
"ec2:CreateLaunchTemplate",
"ec2:CreateLaunchTemplateVersion",
"ec2:CreateNatGateway",
"ec2:CreateRoute",
"ec2:CreateRouteTable",
"ec2:CreateSecurityGroup",
"ec2:CreateSubnet",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:CreateVpc",
"ec2:CreateVpcEndpoint",
"ec2:DeleteDhcpOptions",
"ec2:DeleteFleets",
"ec2:DeleteInternetGateway",
"ec2:DeleteLaunchTemplate",
"ec2:DeleteLaunchTemplateVersions",
"ec2:DeleteNatGateway",
"ec2:DeleteRoute",
"ec2:DeleteRouteTable",
"ec2:DeleteSecurityGroup",
"ec2:DeleteSubnet",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:DeleteVpc",
"ec2:DeleteVpcEndpoints",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeFleetHistory",
"ec2:DescribeFleetInstances",
"ec2:DescribeFleets",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeInternetGateways",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeNatGateways",
"ec2:DescribePrefixLists",
"ec2:DescribeReservedInstancesOfferings",
"ec2:DescribeRouteTables",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSpotInstanceRequests",
"ec2:DescribeSpotPriceHistory",
"ec2:DescribeSubnets",
"ec2:DescribeVolumes",
"ec2:DescribeVpcs",
"ec2:DetachInternetGateway",
"ec2:DisassociateIamInstanceProfile",
"ec2:DisassociateRouteTable",
"ec2:GetLaunchTemplateData",
"ec2:GetSpotPlacementScores",
"ec2:ModifyFleet",
"ec2:ModifyLaunchTemplate",
"ec2:ModifyVpcAttribute",
"ec2:ReleaseAddress",
"ec2:ReplaceIamInstanceProfileAssociation",
"ec2:RequestSpotInstances",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RunInstances",
"ec2:TerminateInstances"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
"Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
"Condition": {
"StringLike": {
"iam:AWSServiceName": "spot.amazonaws.com"
}
}
}
]
} -
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
(オプション) サービスコントロールポリシー を使用して AWS アカウントレベルで特定のアクションを拒否する場合は、Databricks がクロスアカウントロールを引き受けることができるように、
sts:AssumeRole
が許可リストに登録されていることを確認してください。 -
ロールの概要で、 ロールARN をコピーしてDatabricksに追加します。
オプション 2: 顧客管理VPC with デフォルト restrictions ポリシー
-
管理者権限を持つユーザーとしてAWSコンソールにログインし、 IAM コンソールに移動します。
-
サイドバーの「 ロール 」タブをクリックします。
-
ロールのリストで、ステップ1で作成したクロスアカウントIAMロールをクリックします。
-
[権限を追加] ドロップダウンをクリックし、 [インラインポリシーの作成] を選択します。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
次のアクセスポリシーをコピーして貼り付けます。
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1403287045000",
"Effect": "Allow",
"Action": [
"ec2:AssociateIamInstanceProfile",
"ec2:AttachVolume",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CancelSpotInstanceRequests",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeInternetGateways",
"ec2:DescribeNatGateways",
"ec2:DescribeNetworkAcls",
"ec2:DescribePrefixLists",
"ec2:DescribeReservedInstancesOfferings",
"ec2:DescribeRouteTables",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSpotInstanceRequests",
"ec2:DescribeSpotPriceHistory",
"ec2:DescribeSubnets",
"ec2:DescribeVolumes",
"ec2:DescribeVpcAttribute",
"ec2:DescribeVpcs",
"ec2:DetachVolume",
"ec2:DisassociateIamInstanceProfile",
"ec2:ReplaceIamInstanceProfileAssociation",
"ec2:RequestSpotInstances",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RunInstances",
"ec2:TerminateInstances",
"ec2:DescribeFleetHistory",
"ec2:ModifyFleet",
"ec2:DeleteFleets",
"ec2:DescribeFleetInstances",
"ec2:DescribeFleets",
"ec2:CreateFleet",
"ec2:DeleteLaunchTemplate",
"ec2:GetLaunchTemplateData",
"ec2:CreateLaunchTemplate",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:ModifyLaunchTemplate",
"ec2:DeleteLaunchTemplateVersions",
"ec2:CreateLaunchTemplateVersion",
"ec2:AssignPrivateIpAddresses",
"ec2:GetSpotPlacementScores"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
"Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
"Condition": {
"StringLike": {
"iam:AWSServiceName": "spot.amazonaws.com"
}
}
}
]
} -
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
(オプション) サービスコントロールポリシー を使用して AWS アカウントレベルで特定のアクションを拒否する場合は、Databricks がクロスアカウントロールを引き受けることができるように、
sts:AssumeRole
が許可リストに登録されていることを確認してください。 -
ロールの概要で、 ロールARN をコピーします。
オプション 3: カスタム ポリシーの制限がある顧客管理VPC
Machine Images (AMI) のソース Databricks元となる 本番運用AWS アカウントはAmazon601306020600
です。このアカウント ID を使用して、AWS アカウントで使用できる AMI を制限するカスタムアクセスポリシーを作成できます。詳しくは、 Databricks アカウントチームにお問い合わせください。
-
管理者権限を持つユーザーとしてAWSコンソールにログインし、 IAM コンソールに移動します。
-
サイドバーの「 ロール 」タブをクリックします。
-
ロールのリストで、ステップ1で作成したクロスアカウントIAMロールをクリックします。
-
[アクセス許可の追加] ドロップダウンをクリックし、 [インラインポリシーの作成]を クリックします。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
次のアクセスポリシーをコピーして貼り付けます。
ポリシー内の以下の値を独自の設定値に置き換えます:
-
ACCOUNTID
— AWSアカウントID(数字)。 -
VPCID
—ワークスペースを起動するAWS VPCのID。 -
REGION
— VPCデプロイメントのAWSリージョン名(例:us-west-2
)。 -
SECURITYGROUPID
— AWS セキュリティグループの ID。セキュリティ グループ制限を追加すると、クロスアカウント IAMロールを再利用したり、別のワークスペースの資格情報 ID (credentials_id
) を参照したりすることはできません。 ワークスペースごとに個別のロール、ポリシー、および資格情報オブジェクトを作成する必要があります。
-
顧客管理VPC でセキュリティ グループ用にカスタム要件を設定している場合は、Databricks アカウント チームに連絡して、IAM ポリシーのカスタマイズについてサポートを受けてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NonResourceBasedPermissions",
"Effect": "Allow",
"Action": [
"ec2:AssignPrivateIpAddresses",
"ec2:CancelSpotInstanceRequests",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeInternetGateways",
"ec2:DescribeNatGateways",
"ec2:DescribeNetworkAcls",
"ec2:DescribePrefixLists",
"ec2:DescribeReservedInstancesOfferings",
"ec2:DescribeRouteTables",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSpotInstanceRequests",
"ec2:DescribeSpotPriceHistory",
"ec2:DescribeSubnets",
"ec2:DescribeVolumes",
"ec2:DescribeVpcAttribute",
"ec2:DescribeVpcs",
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:GetSpotPlacementScores",
"ec2:RequestSpotInstances",
"ec2:DescribeFleetHistory",
"ec2:ModifyFleet",
"ec2:DeleteFleets",
"ec2:DescribeFleetInstances",
"ec2:DescribeFleets",
"ec2:CreateFleet",
"ec2:DeleteLaunchTemplate",
"ec2:GetLaunchTemplateData",
"ec2:CreateLaunchTemplate",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:ModifyLaunchTemplate",
"ec2:DeleteLaunchTemplateVersions",
"ec2:CreateLaunchTemplateVersion"
],
"Resource": ["*"]
},
{
"Sid": "InstancePoolsSupport",
"Effect": "Allow",
"Action": [
"ec2:AssociateIamInstanceProfile",
"ec2:DisassociateIamInstanceProfile",
"ec2:ReplaceIamInstanceProfileAssociation"
],
"Resource": "arn:aws:ec2:REGION:ACCOUNTID:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstancePerTag",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*", "arn:aws:ec2:REGION:ACCOUNTID:instance/*"],
"Condition": {
"StringEquals": {
"aws:RequestTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstanceImagePerTag",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:image/*"],
"Condition": {
"StringEquals": {
"aws:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "AllowEc2RunInstancePerVPCid",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:REGION:ACCOUNTID:network-interface/*",
"arn:aws:ec2:REGION:ACCOUNTID:subnet/*",
"arn:aws:ec2:REGION:ACCOUNTID:security-group/*"
],
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:REGION:ACCOUNTID:vpc/VPCID"
}
}
},
{
"Sid": "AllowEc2RunInstanceOtherResources",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"NotResource": [
"arn:aws:ec2:REGION:ACCOUNTID:image/*",
"arn:aws:ec2:REGION:ACCOUNTID:network-interface/*",
"arn:aws:ec2:REGION:ACCOUNTID:subnet/*",
"arn:aws:ec2:REGION:ACCOUNTID:security-group/*",
"arn:aws:ec2:REGION:ACCOUNTID:volume/*",
"arn:aws:ec2:REGION:ACCOUNTID:instance/*"
]
},
{
"Sid": "EC2TerminateInstancesTag",
"Effect": "Allow",
"Action": ["ec2:TerminateInstances"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:instance/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2AttachDetachVolumeTag",
"Effect": "Allow",
"Action": ["ec2:AttachVolume", "ec2:DetachVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:instance/*", "arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2CreateVolumeByTag",
"Effect": "Allow",
"Action": ["ec2:CreateVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"aws:RequestTag/Vendor": "Databricks"
}
}
},
{
"Sid": "EC2DeleteVolumeByTag",
"Effect": "Allow",
"Action": ["ec2:DeleteVolume"],
"Resource": ["arn:aws:ec2:REGION:ACCOUNTID:volume/*"],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Vendor": "Databricks"
}
}
},
{
"Effect": "Allow",
"Action": ["iam:CreateServiceLinkedRole", "iam:PutRolePolicy"],
"Resource": "arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot",
"Condition": {
"StringLike": {
"iam:AWSServiceName": "spot.amazonaws.com"
}
}
},
{
"Sid": "VpcNonresourceSpecificActions",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": "arn:aws:ec2:REGION:ACCOUNTID:security-group/SECURITYGROUPID",
"Condition": {
"StringEquals": {
"ec2:vpc": "arn:aws:ec2:REGION:ACCOUNTID:vpc/VPCID"
}
}
}
]
}
-
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
(オプション) サービスコントロールポリシー を使用して AWS アカウントレベルで特定のアクションを拒否する場合は、Databricks がクロスアカウントロールを引き受けることができるように、
sts:AssumeRole
が許可リストに登録されていることを確認してください。 -
ロールの概要で、 ロールARN をコピーします。
ステップ 3: 資格情報の設定を作成する
Databricks で、前の手順で作成したロールを使用する資格情報構成を作成します。
クレデンシャルコンフィギュレーションを作成する方法:
- [資格情報構成名] フィールドに、新しい資格情報構成の人間が判読できる名前を入力します。
- [ロールARN] フィールドに、ロールのARNを入力します。
- [資格情報の作成] をクリックして続行します 。
Databricks は、この手順で資格情報の構成を検証します。考えられるエラーには、無効な ARN やロールのアクセス許可の誤りなどがあります。
高度な構成
次の構成は、新しいワークスペースを作成する場合のオプションです。これらの設定を表示するには、[ Credentials ] ステップの [ Advanced configurations ] ドロップダウンをクリックします。
- メタストア : ワークスペースのメタストアの割り当てを確認します。Unity Catalogメタストアがワークスペースのリージョンに既に存在し、メタストアが新しいワークスペースに自動的に割り当てられるように構成されている場合、メタストアは自動的に選択されます。これがリージョンにデプロイする最初のワークスペースである場合、メタストアは自動的に作成されます。メタストアは、デフォルトによってメタストア レベルのストレージなしで作成されます。 メタストア レベルのストレージが必要な場合は、追加できます。「 既存のメタストアに管理ストレージを追加する」を参照してください。
- ネットワーク設定 : 独自の VPC にワークスペースを作成するには、 ネットワーク設定 を選択または追加します。独自のVPCを設定する手順については、「顧客管理VPCの設定」を参照してください。顧客管理VPCを使用している場合は、 IAMロールが 顧客管理VPC をサポートする access ポリシーを使用していることを確認してください。
- Private Link : PrivateLink を有効にするには、 プライベート アクセス設定を選択または追加します。これには、正しいリージョン VPC エンドポイントを作成し、登録する ネットワーク設定から参照する必要があります。
- 顧客管理キー : マネージドサービスとワークスペース ストレージのワークスペース展開に暗号化キーを追加できます。 マネージドサービスのキーは、コントロールプレーン内のノートブック、シークレット、 Databricks SQL クエリデータを暗号化します。 ワークスペースストレージのキーは、ワークスペースストレージバケット (クラシックコンピュート平面内の DBFSルート とコンピュートリソースの EBS ボリュームを含む) を暗号化します。 詳細については、「 暗号化のために顧客管理キーを構成する」を参照してください。
- セキュリティとコンプライアンス : これらのチェックボックスを使用すると、コンプライアンス セキュリティ プロファイルを有効にしたり、コンプライアンス標準を追加したり、ワークスペースの拡張セキュリティ監視を有効にしたりできます。 詳細については、「 強化されたセキュリティとコンプライアンスの設定を構成する」を参照してください。
ワークスペースの状態を表示する
ワークスペースを作成した後、 「ワークスペース」 ページでそのステータスを確認できます。
- プロビジョニング :進行中です。数分待ってからページを更新してください。
- 実行中 :ワークスペースの展開が成功しました。
- 失敗 :デプロイに失敗しました。
- 禁止 :Databricks の担当者にお問い合わせください。
- キャンセル中 :キャンセル中です。
新しいワークスペースのステータスが [失敗] の場合は、ワークスペースをクリックして詳細なエラー メッセージを表示します。 構成を更新して、ワークスペースのデプロイを再試行できます。 ワークスペースの作成に関するトラブルシューティングを参照してください。
ワークスペースにログインします
- アカウントコンソールに移動し、[ ワークスペース ]アイコンをクリックします。
- ワークスペースのある行で、「 開く 」をクリックします。
- ワークスペース管理者としてログインするには、アカウントオーナーまたはアカウント管理者のEメールアドレスとパスワードでログインしてください。 シングルサインオンを設定した場合は、[ シングルサインオン ]ボタンをクリックします。
次のステップ
ワークスペースをデプロイしたので、データ戦略の構築を開始できます。 Databricks では、次の記事をお勧めします。
- ユーザー、グループ、サービスプリンシパルをワークスペースに追加します。 ユーザー、サービスプリンシパル、およびグループを管理します。
- データガバナンスと Databricksでのデータアクセスの管理について学習します。 「Unity Catalog とは」を参照してください。
- Databricksワークスペースを外部データソースに接続します。「データソースへの接続」を参照してください。
- ワークスペースにデータを取り込みます。 「Databricks レイクハウスへのデータの取り込み」を参照してください。
- ノートブック、コンピュート、ダッシュボード、クエリなどのワークスペース オブジェクトへのアクセスの管理について学習します。 アクセス制御リストを参照してください。