Workspace Execution in AWS
Befolgen Sie diese Anleitung, um das Workspace Execution-Modul für die Verarbeitung personenbezogener Daten in AWS bereitzustellen.
Voraussetzung
Bevor Sie das Workspace Execution-Modul bereitstellen, müssen Sie die folgenden Schritte auf der AWS-Konto und VPC für private Daten einrichten-Seite ausführen...
Eine VPC konfigurieren, die speziell für Alteryx One Platform bestimmt ist, wie im Abschnitt VPC erstellen beschrieben.
Dem Dienstkonto angehängtes Dienstkonto und Basis-IAM-Rolle, wie im Abschnitt IAM konfigurieren beschrieben.
Lösen Sie die Bereitstellung der Verarbeitung privater Daten aus, wie im Abschnitt Bereitstellung der Handhabung privater Daten auslösen beschrieben.
Kontoeinrichtung
Schritt 1: IAM konfigurieren
Schritt 1a: Workspace Execution-IAM-Richtlinie erstellen
Anmerkung
AAC_CEFD_SA_Policy ist ein Beispiel für einen Richtliniennamen. Sie können einen beliebigen Namen für die Richtlinie wählen, der Name muss jedoch mit AAC_CEFD beginnen.
Sie müssen eine benutzerdefinierte IAM-Richtlinie erstellen. Nennen Sie sie AAC_CEFD_SA_Policy und verwenden Sie das folgende Richtliniendokument. Wir empfehlen, die JSON-Registerkarte anstelle des visuellen Editors zu verwenden. Alteryx One erfordert einige -Berechtigungen für die Ausführung. Beim Erstellen der Richtlinie werden einige Sicherheitswarnungen angezeigt. Beachten Sie, dass das IAM-Richtliniendokument die Erstellung von Rollen unterstützt und eine Inline-Richtlinie für die Lambda-Funktion enthält, um Rollen zu übernehmen.
{
"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:*"
}
]
}Schritt 1b: IAM-Richtlinie taggen
Versehen Sie die in Schritt 1a erstellte benutzerdefinierte IAM-Richtlinie mit Tags.
Tag-Name | Wert |
|---|---|
AACResource | aac_sa_custom_policy |
Schritt 1c: IAM-Richtlinie anhängen
Verbinden Sie die IAM-Richtlinie AAC_CEFD_SA_Policy mit dem auf der Seite AWS-Konto und VPC für private Daten einrichten erstellten aac_automation_sa-Dienstkonto.
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
Anmerkung
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).
Schritt 2: Subnetz konfigurieren
Anmerkung
Wenn Sie Designer Cloud und EMR erworben haben, konfigurieren Sie die Subnetze wie unter Live Query und EMR serverlos in AWS beschrieben. Sowohl EMR- als auch CEfD-Ressourcen teilen sich die Subnetze Option.
Workspace Execution in einer Umgebung zur Verarbeitung privater Daten ist 1 Subnetzgruppe erforderlich. Die Gruppe enthält drei einzelne Subnetze, die jeweils in einer anderen Verfügbarkeitszone liegen.
public (erforderlich): Diese Gruppe führt keine Dienste aus, wird aber für den ausgehenden Datenverkehr aus dem VPC verwendet.
eks_node group (required) - The EKS cluster uses this subnet to execute Alteryx software jobs (connectivity, conversion, processing, publishing).
public (erforderlich): Diese Gruppe führt keine Dienste aus, wird aber für den ausgehenden Datenverkehr aus dem VPC verwendet.
private (erforderlich): Diese Gruppe führt private Dienste für den PDP aus.
Gruppe Option: Verwenden Sie diese Gruppe, wenn Sie Workspace Execution in Ihrer Datenverarbeitungsumgebung aktivieren. Wenn Sie diese Option aktivieren, wird ein AMI-Swarm in diesem Subnetz ausgeführt, um Designer-Verarbeitungsaufträge zu handhaben, die in der Cloud ausgeführt werden.
Schritt 2a: Subnetze in der VPC erstellen
Konfigurieren Sie Subnetze in der aac-vpc-VPC.
Erstellen Sie Subnetze und kennzeichnen Sie sie, wie im Beispiel unten gezeigt. Sie können die CIDRs und Subnetzwerte an Ihre Netzwerkarchitektur anpassen.
Die großen Adressräume sind für eine vollständig skaliertes Cluster ausgelegt. Sie können bei Bedarf einen kleineren Adressenspeicher wählen, was aber bei hohen Verarbeitungslasten zu Skalierungsproblemen führen könnte.
Wichtig
Sie müssen Subnetze mit Tag-Name und Tag-Wert, wie in der Tabelle angegeben, taggen.
CIDRs | Subnetzname | Subnetz | AZ | Tag-Name | Tag-Wert |
|---|---|---|---|---|---|
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 |
Schritt 2b: Subnetzroutentabellen
Erstellen Sie die Routentabelle für Ihre Subnetze.
Anmerkung
Diese Routentabelle dient als Beispiel.
Subnetzname | Routenziel | Ziel | Kommentare |
|---|---|---|---|
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. |
öffentlich | /18 CIDR-Block /21 CIDR-Block 0.0.0.0/0 | lokal lokal <gateway-id> | Konfigurieren Sie die gleichen Routen für alle drei AZs-Subnetz-Routentabellen. |
privat | /18 CIDR-Block /21 CIDR-Block <S3 prefix id> 0.0.0.0/0 | lokal lokal <vpce endpoint id> <gateway-id> | Konfigurieren Sie die gleichen Routen für alle drei AZs-Subnetz-Routentabellen. 0.0.0.0/0 sollte auf das öffentliche Netzwerk ausgedehnt werden. |
Option | /21 CIDR-Block <S3 prefix id> 0.0.0.0/0 | Lokal <vpce endpoint id> <gateway-id> | Konfigurieren Sie die gleichen Routen für alle drei AZs-Subnetz-Routentabellen. Grundsätzlich sollte 0.0.0.0/0 auf das öffentliche Netzwerk ausgedehnt werden. |
Anmerkung
Ihr <gateway id> könnte je nach Netzwerkarchitektur entweder ein pro AZ erstelltes NAT-Gateway oder ein Transit-Gateway sein. Erstellen Sie bei einem NAT-Gateway ein NAT-Gateway pro AZ für öffentliche Subnetze.
Verarbeitung privater Daten
Achtung
Das Ändern oder Entfernen von Public-Cloud-Ressourcen, die von Alteryx One bereitgestellt wurden, nachdem die Handhabung privater Daten eingerichtet wurde, kann zu Inkonsistenzen führen. Diese Inkonsistenzen können zu Fehlern bei der Auftragsausführung oder bei der Deprovisionierung der Einrichtung für die Handhabung privater Daten führen.
Schritt 1: Workspace Execution-Bereitstellung auslösen
Die Datenebenenbereitstellung wird über die Admin-Konsole in Alteryx One ausgelöst. Sie benötigen zum Anzeigen Arbeitsbereich-Administrator-Berechtigungen.
Wählen Sie über die Alteryx One-Startseite das Menü Profil und dann Arbeitsbereich-Administrator aus.
Wählen Sie in der Admin-Konsole die Option Handhabung privater Daten und dann Verarbeitung aus.
Wählen Sie Sie das Workspace Execution-Kontrollkästchen und dann Aktualisieren aus.
Die Auswahl von Aktualisieren löst die Bereitstellung des Clusters und der Ressourcen im AWS-Konto aus. Dadurch wird eine Reihe von Validierungsprüfungen durchgeführt, um die korrekte Konfiguration des AWS-Kontos zu überprüfen.
Anmerkung
Der Bereitstellungsprozess dauert bis zum Abschluss etwa 35–40 Minuten.
Nach Abschluss der Bereitstellung können Sie die erstellten Ressourcen (z. B. EC2-Instanzen und Knotengruppen) über die AWS-Konsole anzeigen. Es ist sehr wichtig, dass Sie sie nicht selbst ändern. Manuelle Änderungen können zu Problemen mit der Funktionalität der privaten Datenebene führen.
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.
Anmerkung
<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.