Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

EC2-Instanzprofil

Definieren Sie eine IAM-Rolle für Ihre von Qlik verwalteten EC2-Instanzen. Diese Rolle wird von den Instanzen verwendet, die in Ihrer AWS Lakehouse-Umgebung ausgeführt werden.

Ein EC2-Instanzprofil ist ein Container für eine IAM-Rolle, die einer EC2-Instanz zugewiesen werden kann. Damit kann die Instanz sicher auf AWS-Dienste zugreifen, ohne dass AWS-Anmeldedaten in der Instanz gespeichert werden müssen.

Wenn eine Instanz mit einem Instanzprofil gestartet wird, werden die temporären Anmeldeinformationen der zugehörigen IAM-Rolle den Anwendungen, die in der Instanz ausgeführt werden, automatisch über den Instanz-Metadatendienst zur Verfügung gestellt. Dies ermöglicht es der Instanz, autorisierte API-Anfragen an AWS-Dienste wie Amazon S3, DynamoDB oder CloudWatch zu stellen.

Die Verwendung von Instanzprofilen verbessert die Sicherheit und vereinfacht die Verwaltung von Anmeldeinformationen wie folgt:

  • Eliminierung von hartcodierten Anmeldeinformationen in Anwendungscode oder Konfigurationsdateien.

  • Automatisch rotierende Anmeldeinformationen.

  • Durchsetzung der geringsten Berechtigung durch fein abgestufte IAM-Richtlinien, die mit der Rolle verbunden sind.

Instanzprofile werden üblicherweise in Szenarien verwendet, in denen EC2-Instanzen sicher und programmgesteuert mit anderen AWS-Ressourcen interagieren müssen.

Voraussetzungen

Vergewissern Sie sich, dass Sie die VPC, das Subnetz und die Verfügbarkeitszonen für das Hosting Ihres Qlik Open Lakehouse erstellt haben und über die folgenden Details verfügen:

  • Die URL des S3-Buckets für Qlik zum Speichern interner Metadatendateien.

  • Den Namen des Kinesis-Streams für Qlik zur Verwaltung der Instanz im Cluster.

Erstellen eines Instanzprofils

Um eine Verwaltungsrolle zu erstellen, gehen Sie wie folgt vor:

  1. Gehen Sie in der AWS Console zu IAM.

  2. Klicken Sie unter Roles auf Create role und konfigurieren Sie die Rolle:

    • Trusted entity type: Wählen Sie AWS service aus den Optionen aus.

    • Service or use case: Wählen Sie EC2 aus.

    • Use case: Wählen Sie EC2 aus.

  3. Erstellen Sie die Rolle. Kehren Sie zur Seite Roles zurück und klicken Sie auf die von Ihnen erstellte Rolle.

  4. Klicken Sie auf das Symbol Kopieren neben dem Namen für Instance profile ARN und speichern Sie diesen Wert.

  5. Klicken Sie auf Add permissions und wählen Sie Create inline policy aus.

  6. Policy editor: Wählen Sie JSON aus. Fügen Sie folgenden Text ein und achten Sie auf Folgendes:    

    • Ändern Sie den Parameter <INTERNAL_STREAM_NAME> in Ihren Kinesis-Stream.

    • Ändern Sie den Parameter <INTERNAL_BUCKET_NAME> in Ihren S3-Bucket.


			{
			"Version": "2012-10-17",
			"Statement": [
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"ec2:AttachVolume",
			"ec2:DetachVolume",
			"autoscaling:SetInstanceHealth"
			],
			"Condition": {
			"Null": {
			"aws:ResourceTag/qlik_cluster": "false"
			}
			}
			},
			{
			"Effect": "Allow",
			"Resource": [
			"*"
			],
			"Action": [
			"cloudwatch:PutMetricData"
			]
			},
			{
			"Effect": "Allow",
			"Resource": [
			"arn:aws:kinesis:*:*:stream/<STREAM_NAME>"
				],
				"Action": [
				"kinesis:PutRecord",
				"kinesis:DescribeStreamSummary",
				"kinesis:ListShards",
				"kinesis:PutRecords",
				"kinesis:GetShardIterator",
				"kinesis:GetRecords",
				"kinesis:DescribeStream",
				"kinesis:ListStreamConsumers"
				]
				},
				{
				"Effect": "Allow",
				"Resource": [
				"arn:aws:s3:::<BUCKET_NAME>",
					"arn:aws:s3:::<BUCKET_NAME>/*"
						],
						"Action": [
						"s3:PutObject",
						"s3:GetObject",
						"s3:AbortMultipartUpload",
						"s3:DeleteObjectVersion",
						"s3:ListBucket",
						"s3:DeleteObject",
						"s3:GetObjectVersion"
						]
						},
						{
						"Effect": "Allow",
						"Resource": [
						"arn:aws:ssm:*:*:parameter/qlik/*"
						],
						"Action": [
						"ssm:GetParameter",
						"ssm:PutParameter"
						]
						},
						{
						"Effect": "Allow",
						"Resource": [
						"<SYMMETRIC_KMS_KEY>"
							],
							"Action": [
							"kms:*"
							]
							},
							{
							"Effect": "Allow",
							"Resource": [
							"*"
							],
							"Action": [
							"sts:AssumeRole"
							],
							"Condition": {
							"StringEquals": {
							"sts:ExternalId": "6b69f9c3c8f502f2ddfc8434d443f172ebe4c032f4ef1a3c51215d27a58ca799"
							}
							}
							}
							]
							}
		

Begründungen für die Anforderungsgenehmigung

In der folgenden Tabelle werden die einzelnen Berechtigungen für die EC2-Instanz erläutert:

Richtlinie Berechtigungen Erläuterung
Richtlinie „Volume anhängen“

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"*"

],

"Action": [

"ec2:AttachVolume",

"ec2:DetachVolume",

"autoscaling:SetInstanceHealth"

],

"Condition": {

"Null": {

"aws:ResourceTag/qlik_cluster": "false"

}

}

}

]

}


                                    
Diese Richtlinie gewährt EC2-Instanzen die Berechtigung, Persistent EBS-Volumes anzuhängen, die von Qlik erstellt wurden. Dadurch bleiben die Daten zwischen den Upgrades des Gateway-Rechners erhalten.
CloudWatch

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"*"

],

"Action": [

"cloudwatch:PutMetricData"

}

]

}


                                    

Diese Richtlinie ermöglicht es EC2-Instanzen, benutzerdefinierte Metriken an CloudWatch zu übermitteln, die zur automatischen Skalierung von Qlik Clustern auf der Grundlage der Softwareleistung verwendet werden.

Interner Stream

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"arn:aws:kinesis:*:*:stream/<STREAM_NAME>"

],

"Action": [

"kinesis:PutRecord",

"kinesis:DescribeStreamSummary",

"kinesis:ListShards",

"kinesis:PutRecords",

"kinesis:GetShardIterator",

"kinesis:GetRecords",

"kinesis:DescribeStream",

"kinesis:ListStreamConsumers"

]

}

]

}


                                    
Diese Richtlinie gewährt EC2-Instanzen die Berechtigung, mit den Kinesis-Streams zu interagieren, die von Cluster-Synchronisierungsdiensten wie dem Key-Value Store und Distributed Locks verwendet werden. <INTERNAL_STREAM_NAME> ist ein vom Benutzer konfigurierter Wert.
Interner Bucket

{

"Version": "2012-10-17",

"Effect": "Allow",

"Resource": [

"arn:aws:s3:::<BUCKET_NAME>",

"arn:aws:s3:::<BUCKET_NAME>/*"

],

"Action": [

"s3:PutObject",

"s3:GetObject",

"s3:AbortMultipartUpload",

"s3:DeleteObjectVersion",

"s3:ListBucket",

"s3:DeleteObject",

"s3:GetObjectVersion"

]

}

]

}


                                    
Die Richtlinie gewährt EC2-Instanzen die Berechtigung, interne Daten zu speichern, zu lesen und zu löschen. Die internen Daten enthalten echte Benutzerdaten, die zur Verarbeitung im Zwischenspeicher gehalten werden. <INTERNAL_BUCKET_NAME> ist ein vom Benutzer konfigurierter Wert.

Hat diese Seite Ihnen geholfen?

Wenn Sie ein Problem mit dieser Seite oder ihrem Inhalt feststellen, sei es ein Tippfehler, ein ausgelassener Schritt oder ein technischer Fehler, informieren Sie uns bitte!