Workspace Execution dans AWS
Suivez ce guide pour déployer le module Workspace Execution pour le traitement des données privé AWS.
Condition préalable
Avant de déployer le module Workspace Execution, vous devez effectuer les étapes suivantes sur la page Configurer un compte AWS et un VPC pour les données privées…
Avoir configuré un VPC dédié à Alteryx One Platform, comme indiqué dans la section Créer un VPC.
Avoir rattaché un rôle de compte de service et IAM de base au compte de service, comme indiqué dans la section Configurer l'IAM.
Avoir déclenché avec succès le provisionnement du traitement des données privé, comme indiqué dans la section Déclencher le provisionnement de la gestion des données privées.
Configuration du compte
Étape 1 : Configurer l'IAM
Étape 1a : Créer une politique IAM Workspace Execution
Note
AAC_CEFD_SA_Policy est un exemple de nom de politique. Vous pouvez choisir n'importe quel nom pour la politique, mais il doit commencer par AAC_CEFD.
Vous devez créer une politique IAM personnalisée. Nommez-la AAC_CEFD_SA_Policy et utilisez le document de politique suivant. Nous vous recommandons d'utiliser l'onglet JSON au lieu de l'éditeur visuel. Alteryx One a besoin d'autorisations * pour s'exécuter. Attendez-vous à recevoir des avertissements de sécurité lorsque vous créez la politique. Notez que le document de politique IAM prend en charge la création de rôles et inclut une politique en ligne permettant à la fonction Lambda d'assumer des rôles.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*",
"Condition": {
"StringEqualsIfExists": {
"iam:PassedToService": [
"ec2.amazonaws.com",
"ec2.amazonaws.com.cn"
]
}
}
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"eks:*",
"iam:CreateServiceLinkedRole",
"kms:CreateGrant",
"kms:Decrypt",
"kms:DescribeKey",
"kms:Encrypt",
"kms:GetKeyPolicy",
"kms:GetKeyRotationStatus",
"kms:ListGrants",
"kms:ListResourceTags",
"kms:ListRetirableGrants",
"kms:PutKeyPolicy",
"kms:RetireGrant",
"kms:RevokeGrant",
"kms:ScheduleKeyDeletion",
"kms:TagResource",
"kms:UntagResource"
],
"Resource": [
"arn:aws:eks:*:*:addon/*/*/*",
"arn:aws:eks:*:*:cluster/*",
"arn:aws:eks:*:*:nodegroup/*/*/*",
"arn:aws:eks:*:*:identityproviderconfig/*/*/*/*",
"arn:aws:eks:*:*:access-entry/*/*/*",
"arn:aws:kms:*:*:key/*",
"arn:aws:iam::*:role/*"
]
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": [
"iam:AttachRolePolicy",
"iam:CreateOpenIDConnectProvider",
"iam:CreatePolicy",
"iam:CreatePolicyVersion",
"iam:CreateRole",
"iam:DeleteOpenIDConnectProvider",
"iam:DeletePolicy",
"iam:DeletePolicyVersion",
"iam:DeleteRole",
"iam:DeleteRolePolicy",
"iam:DetachRolePolicy",
"iam:GetOpenIDConnectProvider",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:GetUser",
"iam:GetUserPolicy",
"iam:ListAttachedRolePolicies",
"iam:ListAttachedUserPolicies",
"iam:ListGroupsForUser",
"iam:ListInstanceProfilesForRole",
"iam:ListPolicyTags",
"iam:ListPolicyVersions",
"iam:ListRolePolicies",
"iam:PassRole",
"iam:PutRolePolicy",
"iam:TagOpenIDConnectProvider",
"iam:TagPolicy",
"iam:TagRole",
"iam:UntagOpenIDConnectProvider",
"iam:UntagPolicy",
"iam:UntagRole",
"iam:UpdateAssumeRolePolicy",
"iam:UpdateOpenIDConnectProviderThumbprint",
"iam:UpdateRole"
],
"Resource": [
"arn:aws:iam::*:policy/*",
"arn:aws:iam::*:oidc-provider/*",
"arn:aws:iam::*:user/*",
"arn:aws:iam::*:role/*"
]
},
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": [
"autoscaling:*",
"ec2:*",
"eks:CreateCluster",
"eks:DescribeAddonVersions",
"eks:ListClusters",
"elasticloadbalancing:*",
"events:DeleteRule",
"events:DescribeRule",
"events:ListTagsForResource",
"events:ListTargetsByRule",
"events:PutRule",
"events:PutTargets",
"events:RemoveTargets",
"iam:AddRoleToInstanceProfile",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"iam:GetAccountName",
"iam:GetInstanceProfile",
"iam:ListAccountAliases",
"iam:ListRoles",
"iam:RemoveRoleFromInstanceProfile",
"iam:TagInstanceProfile",
"iam:UntagInstanceProfile",
"kms:CreateKey",
"lambda:AddPermission",
"lambda:CreateFunction",
"lambda:DeleteFunction",
"lambda:GetFunction",
"lambda:GetFunctionCodeSigningConfig",
"lambda:GetPolicy",
"lambda:ListVersionsByFunction",
"lambda:RemovePermission",
"lambda:UntagResource",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration",
"lambda:tagResource",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DeleteLogGroup",
"logs:DeleteLogStream",
"logs:DescribeLogGroups",
"logs:ListTagsForResource",
"logs:ListTagsLogGroup",
"logs:PutLogEvents",
"logs:PutRetentionPolicy",
"logs:TagLogGroup",
"logs:TagResource",
"logs:UntagLogGroup",
"logs:UntagResource",
"memorydb:CreateAcl",
"memorydb:CreateCluster",
"memorydb:CreateSubnetGroup",
"memorydb:CreateUser",
"memorydb:DeleteAcl",
"memorydb:DeleteCluster",
"memorydb:DeleteSubnetGroup",
"memorydb:DeleteUser",
"memorydb:DescribeACLs",
"memorydb:DescribeClusters",
"memorydb:DescribeSubnetGroups",
"memorydb:DescribeUsers",
"memorydb:ListTags",
"memorydb:TagResource",
"memorydb:UpdateAcl",
"memorydb:UpdateCluster",
"memorydb:UpdateSubnetGroup",
"memorydb:UpdateUser",
"networkmanager:Describe*",
"networkmanager:Get*",
"networkmanager:List*",
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteBucketPolicy",
"s3:DeleteBucketWebsite",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:DeleteObjectVersionTagging",
"s3:GetAccelerateConfiguration",
"s3:GetBucketAcl",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketObjectLockConfiguration",
"s3:GetBucketOwnershipControls",
"s3:GetBucketPolicy",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketRequestPayment",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetBucketWebsite",
"s3:GetEncryptionConfiguration",
"s3:GetLifecycleConfiguration",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionAttributes",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionTagging",
"s3:GetObjectVersionTorrent",
"s3:GetReplicationConfiguration",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:PutAccelerateConfiguration",
"s3:PutBucketAcl",
"s3:PutBucketCORS",
"s3:PutBucketLogging",
"s3:PutBucketObjectLockConfiguration",
"s3:PutBucketOwnershipControls",
"s3:PutBucketPolicy",
"s3:PutBucketPublicAccessBlock",
"s3:PutBucketRequestPayment",
"s3:PutBucketTagging",
"s3:PutBucketVersioning",
"s3:PutBucketWebsite",
"s3:PutEncryptionConfiguration",
"s3:PutLifecycleConfiguration",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:PutObjectVersionTagging",
"sts:GetCallerIdentity"
],
"Resource": "*"
},
{
"Sid": "VisualEditor4",
"Effect": "Allow",
"Action": "secretsmanager:*",
"Resource": "arn:aws:secretsmanager:*:*:secret:*"
}
]
}Étape 1b : Marquer la politique IAM
Marquez la politique IAM personnalisée créée à l'étape 1a.
Nom de la balise | Valeur |
|---|---|
AACResource | aac_sa_custom_policy |
Étape 1c : Rattacher la politique IAM
Rattachez la politique IAM AAC_CEFD_SA_Policy au compte de service aac_automation_sa créé à la page Configurer un compte AWS et un VPC pour les données privées.
Step 1d: Enable CEFD Environment Customization
CEFD environment customization lets customers upload custom drivers and connectors to an S3 bucket. The feature flag feature.privateDataPlaneHandling.admin.cEFDEnvironmentCustomizationsEnabled to be set to true to enable customization setup.
Step 1d.1 Create CEFD Customization IAM Policy
Note
AAC_CEFD_Customization_SA_Policy as policy name is referred to as an example in this guide. You can choose any name for the policy, but the name must start with AAC_CEFD_customization.
You need to create a custom IAM policy. Name it AAC_CEFD_Customization_SA_Policy and attach the following policy document.
We recommend using the JSON tab instead of the visual editor. Alteryx Analytics Cloud does require some permissions to run. Expect some security warnings when you create the policy.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor3",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteBucketPolicy",
"s3:DeleteBucketWebsite",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:DeleteObjectVersionTagging",
"s3:GetAccelerateConfiguration",
"s3:GetBucketAcl",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketObjectLockConfiguration",
"s3:GetBucketOwnershipControls",
"s3:GetBucketPolicy",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketRequestPayment",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetBucketWebsite",
"s3:GetEncryptionConfiguration",
"s3:GetLifecycleConfiguration",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionAttributes",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionTagging",
"s3:GetObjectVersionTorrent",
"s3:GetReplicationConfiguration",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:PutAccelerateConfiguration",
"s3:PutBucketAcl",
"s3:PutBucketCORS",
"s3:PutBucketLogging",
"s3:PutBucketObjectLockConfiguration",
"s3:PutBucketOwnershipControls",
"s3:PutBucketPolicy",
"s3:PutBucketPublicAccessBlock",
"s3:PutBucketRequestPayment",
"s3:PutBucketTagging",
"s3:PutBucketVersioning",
"s3:PutBucketWebsite",
"s3:PutEncryptionConfiguration",
"s3:PutLifecycleConfiguration",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:PutObjectVersionTagging"
],
"Resource": "*"
}
]
}Step 1d.2: Tag the IAM policy
Tag the custom IAM policy created on Step 1d.1.
Tag Name | Value |
|---|---|
AACResource | aac_sa_custom_policy |
Step 1d.3: Attach IAM policy
Attach the AAC_CEFD_Customization_SA_Policy IAM policy to the aac_automation_sa service account created in Create a IAM user (service account).
Étape 2 : Configurer le sous-réseau
Note
Si vous avez acheté Designer Cloud et EMR, configurez les sous-réseaux comme indiqué dans la section Live Query et EMR serverless dans AWS. Les ressources EMR et CEfD partagent les sous-réseaux d'options.
Workspace Execution dans un environnement de traitement de données privé, 1 sous-réseau est nécessaire. Le groupe contient 3 sous-réseaux individuels, chacun dans une zone de disponibilité différente.
public (obligatoire) : ce groupe n'exécute aucun service, mais il est utilisé pour les flux sortants du VPC.
eks_node group (required) - The EKS cluster uses this subnet to execute Alteryx software jobs (connectivity, conversion, processing, publishing).
public (obligatoire) : ce groupe n'exécute aucun service, mais il est utilisé pour les flux sortants du VPC.
private (obligatoire) : ce groupe exécute des services privés sur le PDP.
Groupe d'options : utilisez ce groupe si vous activez Workspace Execution dans votre environnement de traitement des données. Si vous activez cette option, un swarm AMI s'exécute dans ce sous-réseau pour gérer les tâches de traitement Designer qui s'exécutent dans le cloud.
Étape 2a : Créer des sous-réseaux dans le VPC
Configurez des sous-réseaux dans le VPC aac_vpc.
Créez des sous-réseaux et marquez-les comme indiqué dans l'exemple ci-dessous. Vous pouvez ajuster les CIDR et les valeurs de sous-réseau pour les adapter à votre architecture réseau.
Les grands espaces d'adressage sont conçus pour s'adapter à un cluster entièrement évolutif. Si nécessaire, vous pouvez choisir un espace d'adressage plus petit, mais vous risquez de rencontrer des problèmes de mise à l'échelle lors de charges de traitement importantes.
Important
Vous devez marquer les sous-réseaux avec le nom de la balise et la valeur de la balise comme indiqué dans le tableau.
CIDR | Nom du sous-réseau | Sous-réseau | AZ | Nom de la balise | Valeur de la balise |
|---|---|---|---|---|---|
10.10.0.0/21 | option | 10.10.4.0/24 | AZa | AACSubnet | option |
option | 10.10.5.0/24 | AZb | AACSubnet | option | |
option | 10.10.6.0/24 | AZc | AACSubnet | option | |
10.10.0.0/21 | eks_control | 10.10.0.0/27 | AZa | AACSubnet | eks_control |
eks_control | 10.10.0.32/27 | AZb | AACSubnet | eks_control | |
eks_control | 10.10.0.64/27 | AZc | AACSubnet | eks_control | |
public | 10.10.0.128/27 | AZa | AACSubnet | public | |
public | 10.10.0.160/27 | AZb | AACSubnet | public | |
public | 10.10.0.192/27 | AZc | AACSubnet | public | |
private | 10.10.1.0/25 | AZa | AACSubnet | Private | |
private | 10.10.1.128/25 | AZb | AACSubnet | Private | |
private | 10.10.2.0/25 | AZc | AACSubnet | Private | |
option | 10.10.4.0/24 | AZa | AACSubnet | Option | |
option | 10.10.5.0/24 | AZb | AACSubnet | Option | |
option | 10.10.6.0/24 | AZc | AACSubnet | Option |
Étape 2b : Tables de routage des sous-réseaux
Créez la table de routage pour vos sous-réseaux.
Note
Cette table de routage est un exemple.
Nom du sous-réseau | Destination de routage | Cible | Commentaires |
|---|---|---|---|
eks_node | /18 CIDR Block /21 CIDR Block <s3 prefix id> 0.0.0.0/0 | local local <vpce endpoint id> <gateway id> | Configure the same routes to all 3 AZs subnet routing tables. |
eks_control | /18 CIDR Block /21 CIDR Block <s3 prefix id> 0.0.0.0/0 | local local <vpce endpoint id> <gateway id> | Configure the same routes to all 3 AZs subnet routing tables. |
publique | Bloc CIDR /18 Bloc CIDR /21 0.0.0.0/0 | local local <gateway id> | Configurez les mêmes routes vers les tables de routage des 3 sous-réseau AZ. |
privé | Bloc CIDR /18 Bloc CIDR /21 <id du préfixe s3> 0.0.0.0/0 | local local <id du point de terminaison vpce> <gateway id> | Configurez les mêmes routes vers les tables de routage des 3 sous-réseau AZ. 0.0.0.0/0 devrait sortir vers le réseau public. |
option | Bloc CIDR /21 <id du préfixe s3> 0.0.0.0/0 | Locale <id du point de terminaison vpce> <gateway id> | Configurez les mêmes routes vers les tables de routage des 3 sous-réseau AZ. En fait, 0.0.0.0/0 devrait sortir vers le réseau public. |
Note
Votre <gateway id> pourrait correspondre à une passerelle NAT de zone ayant été créée via AZ ou à une passerelle de transit, en fonction de votre architecture réseau. S'il s'agit d'une passerelle NAT, créez une passerelle NAT via AZ pour les sous-réseaux publics.
Traitement des données privé
Attention
La modification ou la suppression de ressources de cloud public provisionnées par Alteryx One après la configuration de gestion des données privées peut entraîner des incohérences. Ces incohérences peuvent causer des erreurs lors de l'exécution de la tâche ou lors du désapprovisionnement de la configuration de gestion des données privées.
Étape 1 : Déclencher le déploiement Workspace Execution
Le provisionnement du plan des données est déclenché à partir de la console d'administration dans Alteryx One. Vous devez disposer des privilèges Admin de l'espace de travail dans un espace de travail pour pouvoir le voir.
Depuis la page d'accueil Alteryx One, sélectionnez Menu Profil, puis sélectionnez Admin de l'espace de travail.
Dans la console d'administration, sélectionnez Gestion des données privées, puis Traitement.
Cochez la case Workspace Execution, puis sélectionnez Mettre à jour.
Sélectionner Mettre à jour déclenche le déploiement du cluster et des ressources dans le compte AWS. Cela permet d'exécuter une série de contrôles de validation afin de vérifier la configuration correcte du compte AWS.
Note
Le processus de provisionnement dure environ 35 à 40 minutes.
Une fois le provisionnement terminé, vous pouvez afficher les ressources créées (par exemple, les instances EC2 et les groupes de nœuds) via la console AWS. Il est essentiel de ne pas les modifier vous-même. Les modifications manuelles peuvent entraîner des problèmes avec le fonctionnement du plan des données privé.
Step 2: Update KMS Key policy
After successful creation of Private Data Processing, a custom role credential-service-role is created in the account to allow the k8s credential service account to retrieve private data access credentials from the key vault.
Update the policy of the KMS Key created in Create a Symmetric Key for Secure Vault to allow the custom role credential-service-role with the permissions below.
Note
<account id> is the AWS account number where Private Data Processing has been provisioned.
Go to Key Management Services and select the key created in Create a Symmetric Key for Secure Vault.
Select Key Policy and click Edit.
Delete the default permission and update with the permissions below:
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account id>:role/credential-service-role" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }Click Save changes.