ステップ 2: 監査ログ配信の認証情報を設定する
この記事では、監査ログ配信用の IAM サービスを設定する方法について説明します。 ワークスペースごとに異なる資格情報を使用するには、ワークスペースまたはワークスペースのグループごとにこの記事の手順を繰り返します。
異なるS3バケット名を使用するには、別のIAMロールを作成する必要があります。
IAMロールを作成する
- 管理者権限を持つユーザーとしてAWSコンソールにログインし、 IAM サービスに移動します。
- サイドバーの「 ロール 」タブをクリックします。
- 「 ロールの作成 」をクリックします。
- 「 信頼できるエンティティの種類の選択 」で、「 AWSサービス 」を選択します。
- [ユースケース ] で [ EC2 ] を選択します。
- [次へ] ボタンをクリックします。
- [次へ] ボタンをクリックします。
- 「 ロール名 」フィールドにロール名を入力します。
- 「 ロールの作成 」をクリックします。ロールのリストが表示されます。
インラインポリシーの作成
-
ロールのリストで、作成したロールをクリックします。
-
インラインポリシーを追加します。
-
[アクセス許可] タブで、[ アクセス許可の追加 ] をクリックし、[ インライン ポリシーの作成 ] をクリックします。
-
ポリシーエディターで、「 JSON 」タブをクリックします。
-
このアクセスポリシーをコピーして変更します。ポリシー内の以下の値を独自の設定値に置き換えます:
<s3-bucket-name>
:AWS S3バケットのバケット名。<s3-bucket-path-prefix>
: (オプション) S3 バケット内の配信場所へのパス。 指定しない場合、ログはバケットのルートに配信されます。 このパスは、ログ配信 API を呼び出すときにdelivery_path_prefix
引数と一致する必要があります。
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload"],
"Resource": [
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/",
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/*"
]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads"],
"Resource": "arn:aws:s3:::<s3-bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": ["<s3-bucket-path-prefix>", "<s3-bucket-path-prefix>/*"]
}
}
}
]
}パスプレフィックスのポリシー使用は、次の方法でカスタマイズできます。
- バケットパスプレフィックスを使用したくない場合は、
<s3-bucket-path-prefix>/
(末尾のスラッシュを含む)が表示されるたびにポリシーから削除します。 - S3 バケットを共有し、異なるパスプレフィックスを使用する異なるワークスペースのログ配信設定が必要な場合は、複数のパスプレフィックスを含めることができます。 ポリシーには、
<s3-bucket-path-prefix>
を参照する 2 つの部分があります。 いずれの場合も、パス プレフィックスを参照する 2 つの行を複製します。 例えば:
JSON{
"Resource": [
"arn:aws:s3:::<mybucketname>/field-team/",
"arn:aws:s3:::<mybucketname>/field-team/*",
"arn:aws:s3:::<mybucketname>/finance-team/",
"arn:aws:s3:::<mybucketname>/finance-team/*"
]
} -
「 ポリシーの確認 」をクリックします。
-
「 名前 」フィールドにポリシー名を入力します。
-
「 ポリシーの作成 」をクリックします。
-
サービスコントロールポリシーを使用して AWS アカウントレベルで特定のアクションを拒否する場合は、Databricks がクロスアカウントロールを引き受けることができるように、
sts:AssumeRole
がホワイトリストに登録されていることを確認してください。
-
信頼ポリシーを作成する
-
ロールの概要ページで、「 信頼関係 」タブをクリックします。
-
このアクセス ポリシーをエディターに貼り付け、
<databricks-account-id>
を Databricks アカウント ID に置き換えます。 ポリシーが Databricks on AWS GovCloud と AWS GovCloud DoD の場合は若干異なることに注意してください。
- 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/SaasUsageDeliveryRole-prod-IAMRole-3PLHICCRR1TK"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": ["<databricks-account-id>"]
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws-us-gov:iam::044793339203:role/SaasUsageDeliveryRole-prod-aws-gov-IAMRole-L4QM0RCHYQ1G"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": ["<databricks-account-id>"]
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws-us-gov:iam::170661010020:role/SaasUsageDeliveryRole-prod-aws-gov-dod-IAMRole-1DMEHBYR8VC5P"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": ["<databricks-account-id>"]
}
}
}
]
}
- ロールの概要で、 ロール ARN をコピーします。 この値は、次の手順で資格情報作成構成 API を呼び出すために必要です。
資格情報構成を作成する
資格情報の設定を完了するには、Databricks CLI を使用して 資格情報構成の作成 API を呼び出します。credentials_name
をアカウント内で一意の名前に設定し、作成したロール ARN role_arn
に設定します。
databricks account credentials create --json '{
"credentials_name": "databricks-credentials-v1",
"aws_credentials": {
"sts_role": {
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role"
}
}
}'
このリクエストは、クロスアカウントの信頼を確立し、新しいワークスペースを作成するときに使用できる参照 ID を返します。
応答例:
{
"account_id": "<databricks-account-id>",
"aws_credentials": {
"sts_role": {
"external_id": "<databricks-account-id>",
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role"
}
},
"creation_time": 1579753556257,
"credentials_id": "<databricks-credentials-id>",
"credentials_name": "databricks-credentials-v1"
}
後で使用するために、応答からcredentials_id
フィールドをコピーします。
次のステップ
クロスアカウント配信を設定する必要がある場合 (S3 AWSIAMバケットがログ配信に使用される ロールとは異なる アカウントにある場合)は、「ステップ 3: クロスアカウントサポートを設定する (オプション)」 を参照してください。
S3バケットが、ログ配信に使用したAWS IAMロールと同じ アカウントにある場合は、ログ配信API を呼び出す最後のステップに進みます。「ステップ 4: ログ配信設定を作成する」を参照してください。