Abfragen als IAM-Rolle in Amazon ausführen QuickSight - Amazon QuickSight

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen als IAM-Rolle in Amazon ausführen QuickSight

Sie können die Datensicherheit verbessern, indem Sie differenzierte Zugriffsrichtlinien anstelle umfassenderer Berechtigungen für Datenquellen verwenden, die mit Amazon Athena, Amazon Redshift oder Amazon S3 verbunden sind. Sie erstellen zunächst eine AWS Identity and Access Management -(IAM-)Rolle mit Berechtigungen, die aktiviert werden können, wenn eine Person oder eine API eine Abfrage startet. Anschließend weist ein QuickSight Amazon-Administrator oder Entwickler die IAM-Rolle einer Athena- oder Amazon S3-Datenquelle zu. Wenn die Rolle eingerichtet ist, verfügt jede Person oder API, die die Abfrage ausführt, über genau die Berechtigungen, die zum Ausführen der Abfrage erforderlich sind.

Hier sind einige Dinge, die Sie beachten sollten, bevor Sie sich für die Implementierung von Run-As-Rollen entscheiden, um die Datensicherheit zu verbessern:

  • Erläutern Sie, wie sich die zusätzliche Sicherheit zu Ihrem Vorteil auswirkt.

  • Erkundigen Sie sich gemeinsam mit Ihrem QuickSight Administrator, ob das Hinzufügen von Rollen zu Datenquellen Ihnen dabei hilft, Ihre Sicherheitsziele oder -anforderungen besser zu erfüllen.

  • Fragen Sie sich, ob diese Art von Sicherheit angesichts der Anzahl der Datenquellen sowie der beteiligten Personen und Anwendungen von Ihrem Team durchführbar dokumentiert und aufrechterhalten werden kann? Wenn nicht, wer wird dann diesen Teil der Arbeit übernehmen?

  • In einer strukturierten Organisation sollten Sie die Beteiligten in parallelen Teams in den Bereichen Betrieb, Entwicklung und IT-Support unterbringen. Fragen Sie sie nach ihrer Erfahrung, ihrem Rat und ihrer Bereitschaft, Ihren Plan zu unterstützen.

  • Bevor Sie Ihr Projekt starten, sollten Sie eine Machbarkeitsstudie durchführen, an der die Personen teilnehmen, die Zugang zu den Daten benötigen.

Die folgenden Regeln gelten für die Verwendung von Run-As-Rollen mit Athena, Amazon Redshift und Amazon S3:

  • Jeder Datenquelle kann nur eine zugeordnet sein RoleArn. Nutzer der Datenquelle, die in der Regel auf Datensätze und Bildmaterial zugreifen, können viele verschiedene Arten von Abfragen generieren. Die Rolle legt fest, welche Abfragen funktionieren und welche nicht.

  • Der ARN muss einer IAM-Rolle entsprechen, genauso AWS-Konto wie die QuickSight Instance, die ihn verwendet.

  • Die IAM-Rolle muss über eine Vertrauensbeziehung verfügen, die es ermöglicht QuickSight , die Rolle zu übernehmen.

  • Die Identität, die die QuickSight APIs aufruft, muss berechtigt sein, die Rolle zu übergeben, bevor sie die RoleArn Eigenschaft aktualisieren kann. Sie müssen die Rolle nur übergeben, wenn Sie den Rollen-ARN erstellen oder aktualisieren. Die Berechtigungen werden später nicht erneut bewertet. Ebenso ist die Berechtigung nicht erforderlich, wenn der Rollen-ARN weggelassen wird.

  • Wenn der Rollen-ARN weggelassen wird, verwendet die Athena- oder Amazon-S3-Datenquelle die kontoweiten Rollen- und Scopedown-Richtlinien.

  • Wenn der Rollen-ARN vorhanden ist, werden sowohl die kontoweite Rolle als auch alle Scopedown-Richtlinien ignoriert. Für Athena-Datenquellen werden Lake-Formation-Berechtigungen nicht ignoriert.

  • Für Amazon-S3-Datenquellen müssen sowohl die Manifestdatei als auch die in der Manifestdatei angegebenen Daten über die IAM-Rolle zugänglich sein.

  • Die ARN-Zeichenfolge muss mit einer vorhandenen IAM-Rolle in dem AWS-Konto und dem Ort übereinstimmen, AWS-Region an dem sich die Daten befinden und abgefragt werden.

Wenn eine QuickSight Verbindung zu einem anderen Dienst hergestellt wird AWS, verwendet er eine IAM-Rolle. Standardmäßig wird diese weniger detaillierte Version der Rolle QuickSight für jeden Dienst erstellt, den sie verwendet, und die Rolle wird von AWS-Konto Administratoren verwaltet. Wenn Sie einen IAM-Rollen-ARN mit einer benutzerdefinierten Berechtigungsrichtlinie hinzufügen, überschreiben Sie die umfassendere Rolle für Ihre Datenquellen, die zusätzlichen Schutz benötigen. Weitere Informationen zu Richtlinien finden Sie unter Erstellen einer vom Kunden verwalteten Richtlinie im IAM-Benutzerhandbuch.

Abfragen mit Athena-Datenquellen ausführen

Verwenden Sie die API, um den ARN an die Athena-Datenquelle anzuhängen. Fügen Sie dazu die Rolle ARN zur RoleArnEigenschaft von hinzu AthenaParameters. Zur Überprüfung können Sie den Rollen-ARN im Dialogfeld Athena-Datenquelle bearbeiten sehen. Role ARN ist jedoch ein schreibgeschütztes Feld.

Das Popup-Fenster Athena-Datenquelle bearbeiten, in dem der Rollen-ARN angezeigt wird.

Zu Beginn benötigen Sie eine benutzerdefinierte IAM-Rolle, die wir im folgenden Beispiel demonstrieren.

Beachten Sie, dass das folgende Codebeispiel nur zu Lernzwecken dient. Verwenden Sie dieses Beispiel nur in einer temporären Entwicklungs- und Testumgebung und nicht in einer Produktionsumgebung. Die Richtlinie in diesem Beispiel schützt keine bestimmte Ressource, die in einer bereitstellbaren Richtlinie enthalten sein muss. Auch für die Entwicklung müssen Sie Ihre eigenen AWS Kontoinformationen hinzufügen.

Die folgenden Befehle erstellen eine einfache neue Rolle und fügen einige Richtlinien hinzu, mit denen Berechtigungen erteilt werden QuickSight.

aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Nachdem Sie eine IAM-Rolle identifiziert oder erstellt haben, die für jede Datenquelle verwendet werden soll, fügen Sie die Richtlinien mit dem attach-role-policy hinzu.

aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1

Nachdem Sie Ihre Berechtigungen überprüft haben, können Sie die Rolle in QuickSight Datenquellen verwenden, indem Sie eine neue Rolle erstellen oder eine bestehende Rolle aktualisieren. Wenn Sie diese Befehle verwenden, aktualisieren Sie die AWS-Konto ID und passen AWS-Region Sie sie Ihrer eigenen an.

Denken Sie daran, dass diese Beispielcodefragmente nicht für Produktionsumgebungen bestimmt sind. AWS empfiehlt dringend, dass Sie eine Reihe von Richtlinien mit den geringsten Rechten für Ihre Produktionsfälle festlegen und verwenden.

aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'

Abfragen mit Amazon-Redshift-Datenquellen ausführen

Verbinden Sie Ihre Amazon-Redshift-Daten mit der Run-As-Rolle, um Ihre Datensicherheit mit detaillierten Zugriffsrichtlinien zu verbessern. Sie können eine Run-As-Rolle für Amazon-Redshift-Datenquellen erstellen, die ein öffentliches Netzwerk oder eine VPC-Verbindung verwenden. Sie geben den Verbindungstyp, den Sie verwenden möchten, im Dialogfeld Amazon-Redshift-Datenquelle bearbeiten an. Die Run-as-Rolle wird für serverlose Amazon Redshift Redshift-Datenquellen nicht unterstützt.

Das Bild unten zeigt eine Amazon-Redshift-Datenquelle, die den Verbindungstyp Öffentliches Netzwerk verwendet.

Das Popup-Fenster Amazon-S3-Datenquelle bearbeiten wird angezeigt, in dem der Verbindungstyp angezeigt wird.

Zu Beginn benötigen Sie eine benutzerdefinierte IAM-Rolle, die wir im folgenden Beispiel demonstrieren. Mit den folgenden Befehlen wird ein Beispiel für eine neue Rolle erstellt und Richtlinien angehängt, mit denen Berechtigungen erteilt werden. QuickSight

aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

Nachdem Sie eine IAM-Rolle zur Verwendung mit jeder Datenquelle identifiziert oder erstellt haben, fügen Sie den Richtlinien eine attach-role-policy hinzu. Wenn die redshift:GetClusterCredentialsWithIAM Berechtigung an die Rolle angehängt ist, die Sie verwenden möchten, DatabaseGroups sind die Werte für DatabaseUser und optional.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }

Im obigen Beispiel wird eine Datenquelle erstellt, die die Parameter RoleARNDatabaseUser, und DatabaseGroups IAM verwendet. Wenn Sie die Verbindung nur über den RoleARN IAM-Parameter herstellen möchten, fügen Sie Ihrer Rolle die redshift:GetClusterCredentialsWithIAM Berechtigung hinzu, wie im Beispiel unten gezeigt.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"

Nachdem Sie Ihre Berechtigungen überprüft haben, können Sie die Rolle in QuickSight Datenquellen verwenden, indem Sie eine neue Rolle erstellen oder eine bestehende Rolle aktualisieren. Wenn Sie diese Befehle verwenden, aktualisieren Sie die AWS Konto-ID und die AWS Region so, dass sie mit Ihren eigenen übereinstimmen.

aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "redshiftdemocluster", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Wenn Ihre Datenquelle den VPC-Verbindungstyp verwendet, verwenden Sie die folgende VPC-Konfiguration.

{ "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam vpc", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "vpcdemo", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

Wenn Ihre Datenquelle die redshift:GetClusterCredentialsWithIAM Berechtigung verwendet und nicht die DatabaseGroups Parameter DatabaseUser oder verwendet, gewähren Sie der Rolle Zugriff auf einige oder alle Tabellen im Schema. Um zu sehen, ob einer Rolle SELECT Berechtigungen für eine bestimmte Tabelle erteilt wurden, geben Sie den folgenden Befehl in den Amazon Redshift Query Editor ein.

SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:RoleName' AND t.tablename = tableName

Weitere Informationen zur SELECT Aktion im Amazon Redshift Query Editor finden Sie unter SELECT.

Um der Rolle SELECT Berechtigungen zu erteilen, geben Sie den folgenden Befehl im Amazon Redshift Query Editor ein.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Weitere Informationen zur GRANT Aktion im Amazon Redshift Query Editor finden Sie unter GRANT.

Abfragen mit Amazon-S3-Datenquellen ausführen

Amazon S3 S3-Datenquellen enthalten eine Manifestdatei, die QuickSight verwendet wird, um Ihre Daten zu finden und zu analysieren. Sie können eine JSON-Manifestdatei über die QuickSight Konsole hochladen oder eine URL angeben, die auf eine JSON-Datei in einem S3-Bucket verweist. Wenn Sie sich dafür entscheiden, eine URL anzugeben, QuickSight muss Ihnen die Erlaubnis erteilt werden, auf die Datei in Amazon S3 zuzugreifen. Verwenden Sie die QuickSight Verwaltungskonsole, um den Zugriff auf die Manifestdatei und die Daten, auf die sie verweist, zu kontrollieren.

Mit der RoleArnEigenschaft können Sie Zugriff auf die Manifestdatei und die Daten, auf die sie verweist, über eine benutzerdefinierte IAM-Rolle gewähren, die die kontoweite Rolle außer Kraft setzt. Verwenden Sie die API, um den ARN an die Manifestdatei der Amazon-S3-Datenquelle anzuhängen. Fügen Sie dazu die Rolle ARN in die RoleArnEigenschaft von S3Parameters ein. Zur Überprüfung können Sie den Rollen-ARN im Dialogfeld S3-Datenquelle bearbeiten sehen. Role ARN ist jedoch ein schreibgeschütztes Feld, wie im folgenden Screenshot gezeigt.

Das Popup-Fenster Amazon-S3-Datenquelle bearbeiten, in dem der Rollen-ARN angezeigt wird.

Erstellen Sie zunächst eine Amazon-S3-Manifestdatei. Anschließend können Sie sie entweder auf Amazon hochladen, QuickSight wenn Sie einen neuen Amazon S3 S3-Datensatz erstellen, oder die Datei in den Amazon S3 S3-Bucket legen, der Ihre Datendateien enthält. Sehen Sie sich das folgende Beispiel an, um zu sehen, wie eine Manifestdatei aussehen könnte:

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

Eine Anleitung zur Erstellung einer Manifestdatei finden Sie unter Unterstützte Formate für Amazon-S3-Manifestdateien.

Nachdem Sie eine Manifestdatei erstellt und zu Ihrem Amazon S3 S3-Bucket hinzugefügt oder in diese hochgeladen haben QuickSight, erstellen oder aktualisieren Sie eine bestehende Rolle in IAM, die s3:GetObject Zugriff gewährt. Das folgende Beispiel zeigt, wie eine bestehende IAM-Rolle mit der AWS API aktualisiert wird:

aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*" } ] }'

Nachdem Ihre Richtlinie s3:GetObject Zugriff gewährt hat, können Sie mit der Erstellung von Datenquellen beginnen, die die aktualisierte put-role-policy auf die Manifestdatei der Amazon-S3-Datenquelle anwenden.

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --data-source-id "s3-run-as-role-demo-source" \ --cli-input-json '{ "Name": "S3 with a custom Role", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket", "ManifestFileLocation": { "Bucket": "s3-bucket-name", "Key": "manifest.json" } } } }'

Nachdem Sie Ihre Berechtigungen überprüft haben, können Sie die Rolle in QuickSight Datenquellen verwenden, indem Sie entweder eine neue Rolle erstellen oder eine bestehende Rolle aktualisieren. Achten Sie bei der Verwendung dieser Befehle darauf, die AWS-Konto ID so zu aktualisieren, dass AWS-Region sie mit Ihrer eigenen übereinstimmt.