Aller au contenu principal

Tutoriel : Configurer l'accès S3 avec un profil d'instance

important

Cette documentation a été retirée et pourrait ne pas être mise à jour.

Cet article décrit les modèles hérités de configuration de l'accès à Amazon S3. Databricks recommande d'utiliser les emplacements externes Unity Catalog pour gérer l'accès aux données stockées dans le stockage d'objets cloud. Voir Créer un identifiant de stockage et un emplacement externe pour S3 à l’aide d’AWS CloudFormation.

Ce tutoriel vous explique comment créer un profil d'instance avec des autorisations de lecture, d'écriture, de mise à jour et de suppression sur un seul compartiment S3. Vous pouvez accorder des privilèges pour plusieurs compartiments à l'aide d'un seul rôle IAM et d'un profil d'instance. Il est également possible d'utiliser des profils d'instance pour accorder uniquement les autorisations de lecture et de listage sur S3.

Les administrateurs configurent des rôles IAM dans AWS, link them à un Databricks Workspace et accordent l'accès aux utilisateurs privilégiés pour associer des profils d'instance à des compute. Tous les utilisateurs qui ont accès aux ressources de compute avec un profil d’instance qui lui est associé obtiennent les privilèges accordés par le profil d’instance.

Avant de commencer

Ce tutoriel est conçu pour les administrateurs de Workspace. Vous devez disposer de privilèges suffisants dans le compte AWS contenant votre Workspace Databricks, et être administrateur de Workspace Databricks.

Ce tutoriel suppose les autorisations et assets existants suivants :

  • Privilèges pour modifier le rôle IAM utilisé pour déployer le Workspace Databricks.
  • Privilèges de création de nouveaux rôles IAM dans AWS.
  • Privilèges de modification des autorisations sur un compartiment S3.

Étape 1 : Créer un profil d'instance à l'aide de la console AWS

  1. Dans la console AWS, accédez au service IAM .

  2. Cliquez sur l’onglet tab dans la barre latérale.

  3. Cliquez sur Créer un rôle .

    1. Sous Type d'entité de confiance , sélectionnez Service AWS .
    2. Sous **Cas d'usage**, sélectionnez **EC2**.
    3. Cliquez sur Suivant .
    4. En bas de la page, cliquez sur Suivant .
    5. Dans le champ **Nom du rôle**, saisissez un nom de rôle.
    6. Cliquez sur Créer un rôle .
  4. Dans la liste des rôles, cliquez sur le rôle.

  5. Ajoutez une politique intégrée au rôle. Cette politique accorde l'accès au compartiment S3.

    1. Dans l'onglet Autorisations, cliquez sur Ajouter des autorisations > Créer une politique inline .

    2. Cliquez sur l'onglet JSON .

    3. Copiez cette politique et remplacez <s3-bucket-name> par le nom de votre compartiment.

      JSON
      {
      "Version": "2012-10-17",
      "Statement": [
      {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::<s3-bucket-name>"]
      },
      {
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
      "Resource": ["arn:aws:s3:::<s3-bucket-name>/*"]
      }
      ]
      }
    4. Cliquez sur Vérifier la politique .

    5. Dans le champ **Nom**, saisissez un nom de politique.

    6. Cliquez sur Créer une politique .

  6. Dans le résumé du rôle, copiez l' ARN du rôle.

    ARN du profil d&#39;instance

remarque

Si vous avez l'intention d'activer le chiffrement pour le bucket S3, vous devez ajouter le rôle IAM en tant qu' utilisateur clé pour la clé KMS fournie dans la configuration. Consultez Configurer le chiffrement pour S3 avec KMS.

Étape 2 : activer la stratégie pour fonctionner avec des ressources serverless

Cette étape garantit que votre profil d'instance fonctionne également pour configurer des SQL Warehouses avec des profils d'instance. Voir Configurations d'accès aux données.

  1. Dans la liste des rôles, cliquez sur votre profil d'instance.

  2. Sélectionnez l'onglet **Trust Relationships tab**.

  3. Cliquez sur Modifier la politique d’approbation .

  4. Dans le tableau Statement existant, ajoutez le bloc JSON suivant à la fin de la politique d'approbation existante. Assurez-vous de ne pas écraser la politique existante.

    JSON
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": ["arn:aws:iam::790110701330:role/serverless-customer-resource-role"]
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": ["databricks-serverless-<YOUR-WORKSPACE-ID1>", "databricks-serverless-<YOUR-WORKSPACE-ID2>"]
    }
    }
    }

    La seule chose que vous devez modifier dans l'instruction est l'ID du workspace. Remplacez les YOUR_WORKSPACE-IDpar un ou plusieurs ID de workspace Databricks pour les workspaces qui utiliseront ce rôle.

remarque

Pour obtenir l'ID de votre Workspace, vérifiez l'URL lorsque vous utilisez votre Workspace. Par exemple, dans https://<databricks-instance>/?o=6280049833385130, le nombre après o= est l'ID du workspace.

Ne modifiez pas le principal de la politique. Le champ Principal.AWS doit continuer à avoir la valeur arn:aws:iam::790110701330:role/serverless-customer-resource-role. Cela fait référence à un rôle de compute Serverless géré par Databricks. 5. Cliquez sur Vérifier la politique .

  1. Cliquez sur Enregistrer les modifications .

Étape 3 : créez la politique de compartiment

Au minimum, la politique S3 doit inclure les actions ListBucket et GetObject, qui offrent un accès en lecture seule à un compartiment. Delta Lake utilise les autorisations DeleteObject et PutObject lors des Opérations régulières. Les autorisations de l'exemple de politique ci-dessous sont les « default » recommandés pour les clusters qui lisent et écrivent des données.

remarque

Les compartiments S3 ont des noms universellement uniques et ne nécessitent pas d'ID de compte pour une identification universelle. Si vous choisissez de link un compartiment S3 à un rôle IAM et à un workspace Databricks dans un compte AWS différent, vous devez spécifier l'ID de compte lors de la configuration de votre politique de compartiment S3.

  1. Accédez à votre console S3. Dans la liste Buckets , sélectionnez le compartiment pour lequel vous souhaitez créer une politique.

  2. Cliquez sur Autorisations .

  3. Sous Politique relative aux compartiments , cliquez sur Modifier .

  4. Collez une stratégie. Voici un exemple de stratégie IAM de compartiment inter-comptes, en remplaçant <aws-account-id-databricks> par l'ID du compte AWS où l'environnement Databricks est déployé, <iam-role-for-s3-access> par le rôle de profil d'instance et <s3-bucket-name> par le nom du compartiment.

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "Example permissions",
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    },
    "Action": ["s3:GetBucketLocation", "s3:ListBucket"],
    "Resource": "arn:aws:s3:::<s3-bucket-name>"
    },
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    },
    "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl"],
    "Resource": "arn:aws:s3:::<s3-bucket-name>/*"
    }
    ]
    }
  5. Cliquez sur Enregistrer .

Étape 4 : localisez le rôle IAM qui a créé le déploiement Databricks

Si vous ne savez pas quel rôle IAM a créé le déploiement Databricks, effectuez les opérations suivantes :

  1. En tant qu'administrateur de compte, connectez-vous à la console du compte.
  2. Accédez aux Workspaces et cliquez sur le nom de votre Workspace.
  3. Dans la boîte **Informations d'identification**, notez le nom du rôle à la fin de l'ARN de rôle.

Par exemple, dans l'ARN du rôle arn:aws:iam::123456789123:role/finance-prod, le nom du rôle est finance-prod.

Étape 5 : Ajoutez le rôle IAM S3 à la stratégie EC2

  1. Dans la console AWS, accédez au service IAM .

  2. Cliquez sur l’onglet tab dans la barre latérale.

  3. Cliquez sur le rôle qui a créé le déploiement Databricks.

  4. Dans l'onglet Permissions tab, cliquez sur la stratégie.

  5. Cliquez sur **Modifier la politique**.

  6. Ajouter le bloc suivant à la fin du tableau Statement. Assurez-vous de ne pas écraser l'une des politiques existantes. Remplacez <iam-role-for-s3-access> par le rôle que vous avez créé dans Tutoriel : configurer l'accès S3 avec un profil d'instance:

    JSON
    {
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "arn:aws:iam::<aws-account-id-databricks>:role/<iam-role-for-s3-access>"
    }
  7. Cliquez sur Vérifier la politique .

  8. Cliquez sur Enregistrer les modifications .

Étape 6 : Ajouter le profil d'instance à Databricks

  1. En tant qu'administrateur de workspace, accédez à la page des paramètres.

  2. Cliquez sur l'onglet **Security** tab.

  3. Cliquez sur Gérer en regard de Profils d'instance .

  4. Cliquez sur Ajouter un profil d'instance .

  5. Collez l'ARN de votre profil d'instance dans le champ ARN du profil d'instance . Si vous n'avez pas l'ARN, consultez Didacticiel : Configurer l'accès S3 avec un profil d'instance.

  6. Pour que SQL serverless fonctionne avec votre profil d'instance, vous devrez peut-être spécifier explicitement l'ARN de rôle associé à votre profil d'instance dans le champ ARN de rôle IAM .

    Cette étape n'est obligatoire que si le nom de rôle associé à votre profil d'instance (le texte après le dernier slash dans l'ARN du rôle) et le nom du profil d'instance (le texte après le dernier slash dans l'ARN du profil d'instance) ne correspondent pas. Pour confirmer si cela vous concerne :

    1. Dans la console AWS, accédez à l'tab Rôles du service IAM. Elle répertorie les rôles IAM de votre compte.

    2. Cliquez sur le rôle dont le nom correspond au nom du profil d'instance dans les paramètres d'administration de Databricks SQL, dans la section **Data Security** pour le champ **Instance Profile** que vous avez trouvé précédemment dans cette section.

    3. Dans la zone de résumé, recherchez les champs ARN du rôle et ARNs du profil d'instance et vérifiez s'ils correspondent.

      Le nom du profil d&#39;instance et le nom ARN du rôle correspondent-ils ?

    4. S'ils ne correspondent pas, collez l'ARN de rôle dans le champ ARN de rôle IAM . Si les noms correspondent, vous n'avez pas besoin de définir le champ ARN de rôle IAM .

    5. Uniquement si vous configurez le passthrough des informations d’identification IAM, sélectionnez la propriété Profil d’instance méta .

  7. Databricks valide que l'ARN du profil d'instance est à la fois syntaxiquement et sémantiquement correct. Pour valider la correction sémantique, Databricks effectue une exécution à blanc en lançant un cluster avec ce profil d'instance. Tout échec dans cette simulation entraîne une erreur de validation dans l'interface utilisateur. La validation du profil d'instance peut échouer si le profil d'instance contient la politique tag-enforcement, vous empêchant d'ajouter un profil d'instance légitime. Si la validation échoue et que vous souhaitez toujours ajouter le profil d'instance, cochez la case Ignorer la validation .

  8. Cliquez sur **Ajouter**.

Gérer les profils d'instance

Les administrateurs du Workspace peuvent gérer l'accès aux profils d'instance et les mettre à jour. Voir Gérer les profils d'instance dans Databricks.

Étapes suivantes