ステップ2: 監査ログ配信の資格情報を構成する

この記事では、監査ログ配信用に IAM サービスを設定する方法について説明します。 異なるワークスペースに異なる資格情報を使用するには、ワークスペースまたはワークスペースのグループごとにこの記事の手順を繰り返します。

注:

異なるS3バケット名を使用するには、別のIAMロールを作成する必要があります。

IAMロールを作成する

  1. 管理者権限を持つユーザーとしてAWSコンソールにログインし、IAMサービスに移動します。

  2. サイドバーの「ロール」タブをクリックします。

  3. ロールの作成」をクリックします。

    1. 信頼できるエンティティの種類の選択」で、「AWSサービス」を選択します。

    2. [ユースケース][EC2]を選択します。

    3. [次へ]ボタンをクリックします。

    4. [次へ]ボタンをクリックします。

    5. ロール名」フィールドにロール名を入力します。

    6. ロールの作成」をクリックします。ロールのリストが表示されます。

インラインポリシーを作成する

  1. ロールのリストで、作成したロールをクリックします。

  2. インラインポリシーを追加します。

    1. [権限]タブで、 [権限の追加] をクリックし、 [インライン ポリシーの作成] をクリックします。

    2. ポリシーエディターで、「JSON」タブをクリックします。

    3. このアクセスポリシーをコピーして変更します。ポリシー内の以下の値を独自の設定値に置き換えます:

      • <s3-bucket-name>:AWS S3バケットのバケット名。

      • <s3-bucket-path-prefix>: (オプション) S3 バケット内の配信場所へのパス。 指定しない場合、ログはバケットのルートに配信されます。 ログ配信 API を呼び出すとき、このパスはdelivery_path_prefix引数と一致する必要があります。

      {
        "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 行を複製します。 例えば:

      {
        "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/*"
        ]
      }
      
    4. ポリシーの確認」をクリックします。

    5. 名前」フィールドにポリシー名を入力します。

    6. ポリシーの作成」をクリックします。

    7. AWSアカウントレベルで特定のアクションを拒否するためにService Control Policiesを使用する場合、Databricksがクロスアカウントロールを引き受けることができるようにsts:AssumeRoleがホワイトリストに登録されていることを確認します。

信頼ポリシーを作成する

  1. ロールの概要ページで、「信頼関係」タブをクリックします。

  2. このアクセス ポリシーをエディターに貼り付け、 <databricks-account-id> Databricks アカウント IDに置き換えます。 ポリシーでは、Databricks AWS アカウント ID 414351767826を使用します。 Databricks on AWS GovCloud で Databricksを使用している場合は、 Databricksアカウント ID 044793339203 を使用します。

    {
      "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>"
              ]
            }
          }
        }
      ]
    }
    
  3. ロールの概要で、ロール ARN をコピーします。 次のステップで資格情報構成 API の作成を呼び出すには、この値が必要です。

資格情報設定APIの作成を呼び出す

資格情報の設定を完了するには、資格情報構成 API の作成を呼び出します。

このリクエストはアカウント間の信頼を確立し、新しいワークスペースを作成するときに使用できる参照 ID を返します。

  • <account-id>をDatabricksのアカウントIDに置き換えます。

  • credentials_nameにはアカウント内で一意の名前に設定します。

  • role_arnを、先ほど作成したロール ARN に設定します。

応答本文には、 credentials_id フィールドが含まれます。 このフィールドをコピーして、ステップ 4 でログ配信構成を作成するときに使用できるようにします。

例:

curl -X POST -n \
  'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/credentials' \
  -d '{
  "credentials_name": "databricks-credentials-v1",
  "aws_credentials": {
    "sts_role": {
      "role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role"
    }
  }
}'

応答例:

{
  "credentials_id": "<databricks-credentials-id>",
  "account_id": "<databricks-account-id>",
  "aws_credentials": {
    "sts_role": {
      "role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role",
      "external_id": "<databricks-account-id>"
    }
  },
  "credentials_name": "databricks-credentials-v1",
  "creation_time": 1579753556257
}

ここでも、後で使用するために応答から credentials_id フィールドをコピーします。

次のステップ

クロスアカウント配信を設定する必要がある場合 ( S3バケットが、ログ配信に使用される IAM ロールとは異なるAWSアカウントにある場合) は、 「ステップ 3: クロスアカウントサポートを構成する (オプション)」を参照してください。

S3バケットがログ配信に使用される IAM ロールと同じAWSアカウントにある場合は、ログ配信APIを呼び出す最後のステップに進みます。 「ステップ 4: ログ配信 API を呼び出す」を参照してください。