手順 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 アカウントレベルで特定のアクションを拒否する場合は、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 を呼び出す」を参照してください。