Zephyrnet-logo

Federatieve toegang tot Amazon Redshift-clusters in AWS China-regio's met Active Directory Federation Services

Datum:

Veel klanten beheren gebruikersidentiteiten al via identiteitsproviders (IdP's) voor Single Sign-On-toegang. Met een IdP zoals Active Directory Federation Services (AD FS), kunt u federatieve toegang instellen tot: Amazon roodverschuiving clusters als een mechanisme voor het beheren van machtigingen voor de databaseobjecten door bedrijfsgroepen. Dit zorgt voor een naadloze gebruikerservaring en centraliseert het beheer van authenticatie en machtigingen voor eindgebruikers. Raadpleeg voor meer informatie de serie blogposts "Federeer toegang tot uw Amazon Redshift-cluster met Active Directory Federation Services (AD FS)" (deel 1, deel 2).

Door de verschillen in de uitvoering van Amazon-webservices in China, moeten klanten de configuraties dienovereenkomstig aanpassen. AWS China-regio's (Beijing en Ningxia) bevinden zich bijvoorbeeld in een aparte AWS-partitie, daarom bevatten alle Amazon Resource Names (ARN's) het achtervoegsel -cn. AWS China-regio's worden ook gehost op een ander domein: www.amazonaws.cn.

Dit bericht introduceert een stapsgewijze procedure om federatieve toegang tot Amazon Redshift in AWS China-regio's in te stellen. Het geeft de belangrijkste verschillen aan waar u op moet letten en biedt een gids voor het oplossen van veelvoorkomende fouten.

Overzicht oplossingen

Het volgende diagram illustreert het proces van: Beveiliging Assertion Markup Language 2.0 (SAML)-gebaseerde federatietoegang tot Amazon Redshift in AWS China-regio's. De workflow omvat de volgende belangrijke stappen:

  1. De SQL-client geeft een gebruikersnaam en wachtwoord aan AD FS.
  2. AD FS verifieert de referentie en geeft een SAML-antwoord terug indien succesvol.
  3. De SQL-client doet een API-aanroep naar: AWS-beveiligingstoken-service (AWS STS) naar een voorkeursrol aannemen bij SAML.
  4. AWS STS verifieert het SAML-antwoord op basis van wederzijds vertrouwen en retourneert tijdelijke referenties als dit lukt.
  5. De SQL-client communiceert met Amazon Redshift om terug te komen een databasegebruiker met tijdelijke inloggegevensen gebruikt het vervolgens om lid te worden van databasegroepen en verbinding te maken met de opgegeven database.

De architectuur

We organiseren de walkthrough in de volgende stappen op hoog niveau:

  1. Configureer een AD FS Relying Party Trust voor AWS China Regions en definieer basisclaimregels.
  2. Voorzien in een AWS Identiteits- en toegangsbeheer (IAM) identiteitsprovider en rollen.
  3. Voltooi de claimregels van de resterende Relying Party Trust op basis van de IAM-resources.
  4. Maak verbinding met Amazon Redshift met federatieve toegang via een op JDBC gebaseerde SQL-client.

Voorwaarden

In dit bericht wordt ervan uitgegaan dat je aan de volgende vereisten voldoet:

  • Windows Server 2016
  • De mogelijkheid om gebruikers en groepen aan te maken in AD
  • De mogelijkheid om een ​​Relying Party Trust te configureren en claimregels te definiëren in AD FS
  • Een AWS-account
  • Voldoende machtigingen om IAM-identiteitsproviders, rollen, Amazon virtuele privécloud (Amazon VPC) gerelateerde bronnen en een Amazon Redshift-cluster via AWS Cloud-ontwikkelingskit (AWS-CDK)

Configureer een AD FS Relying Party Trust en definieer claimregels

Met een Relying Party Trust kunnen AWS en AD FS met elkaar communiceren. Het is mogelijk om tegelijkertijd twee Relying Party Trusts voor zowel AWS China-regio's als AWS-regio's in dezelfde AD FS te configureren. Voor AWS China-regio's moeten we een andere SAML-metadatadocument at https://signin.amazonaws.cn/static/saml-metadata.xml. De ID van de vertrouwende partij voor AWS China-regio's is: urn:amazon:webservices:cn-north-1, terwijl dat voor AWS Global Regions is urn:amazon:webservices. Noteer deze identifier om later in dit bericht te gebruiken.

XML metagegevens van vertrouwende partij

AD-groepen en gebruikers toevoegen

Met op SAML gebaseerde federatie nemen eindgebruikers een IAM-rol aan en gebruiken deze om lid te worden van meerdere databasegroepen (DB). De machtigingen voor dergelijke rollen en DB-groepen kunnen effectief worden beheerd door AD-groepen. We gebruiken verschillende voorvoegsels in AD-groepsnamen om ze te onderscheiden, die helpen bij het koppelen aan rollen en DB-groepclaimregels. Het is belangrijk om de twee typen AD-groepen correct te onderscheiden, omdat ze zijn toegewezen aan verschillende AWS-resources.

We vervolgen onze walkthrough met een voorbeeld. Stel dat er in het bedrijfsleven twee rollen zijn: datawetenschapper en data-engineer, en twee DB-groepen: oncologie en farmacie. Datawetenschappers kunnen lid worden van beide groepen en data-engineers kunnen alleen lid worden van de apotheekgroep. Aan de AD-kant definiëren we één AD-groep voor elke rol en groep. Aan de AWS-kant definiëren we één IAM-rol voor elke rol en één Amazon Redshift DB-groep voor elke DB-groep. Stel dat Clement een datawetenschapper is en Jimmy een data-engineer, en beide worden al beheerd door AD. Het volgende diagram illustreert deze relatie.

AD-groep en gebruikerstoewijzing aan IAM-rol en DB-groep

Je kan maak de AD-groepen en gebruikers aan met ofwel de AWS-opdrachtregelinterface (AWS CLI) of de AWS-beheerconsole. We bieden voorbeeldopdrachten in het README-bestand in de GitHub-opslagplaats.

Volg substappen a naar o van stap 2 in JDBC of ODBC Single Sign-on authenticatie instellen met AD FS om de vertrouwende partij in te stellen met het juiste SAML-metadatadocument voor AWS China-regio's en de eerste drie claimregels te definiëren (NameId, RoleSessionName en Get AD Groups). We hervatten nadat de IAM-identiteitsprovider en rollen zijn ingericht.

Een IAM-identiteitsprovider en rollen verstrekken

U brengt de vertrouwensrelatie voor AD tot stand met AWS door een IAM-identiteitsprovider in te richten. De IAM-identiteitsprovider en veronderstelde rollen moeten zich in één AWS-account bevinden, anders krijgt u de volgende foutmelding tijdens federatieve toegang: "Principaal bestaat buiten het account van de rol die wordt aangenomen." Volg deze stappen om de resources in te richten:

  1. Download het metadatabestand op https://yourcompany.com/FederationMetadata/2007-06/FederationMetadata.xml vanaf uw AD FS-server.
  2. Bewaar het lokaal op /tmp/FederationMetadata.xml.
  3. Check out de AWS CDK-code op GitHub.
  4. Gebruik AWS CDK om de stack met de naam te implementeren redshift-cn:
export AWS_ACCOUNT=YOUR_AWS_ACCOUNT
export AWS_DEFAULT_REGION=cn-north-1
export AWS_PROFILE=YOUR_PROFILE cdk deploy redshift-cn --require-approval never

De AWS CDK versie moet 2.0 of nieuwer zijn. Voor testdoeleinden kunt u de AdministratorAccess beheerd beleid voor de implementatie. Gebruik voor productiegebruik een profiel met de minste bevoegdheden.

De volgende tabel geeft een overzicht van de bronnen die het AWS CDK-pakket bevat.

Service Hulpmiddelen Tellen Opmerkingen
Amazon VPC VPC 1 .
subnet 2 .
Internetgateway 1 .
Routetabel 1 .
Beveiligingsgroep 1 .
IAM SAML-identiteitsprovider 1 .
Rol 3 1 servicerol voor cluster
2 federatieve rollen
Amazon roodverschuiving TROS 1 1 knoop, dc2.groot
AWS-geheimenmanager Geheim 1 .

In dit voorbeeld is de Openbaar toegankelijk instelling van het Amazon Redshift-cluster is ingesteld op: ingeschakeld voor eenvoud. In een productieomgeving moet u deze instelling echter uitschakelen en het cluster in een privésubnetgroep plaatsen. Verwijzen naar Hoe krijg ik toegang tot een privé Amazon Redshift-cluster vanaf mijn lokale machine? voor meer informatie.

Een beveiligingsgroep configureren

Voeg een inkomende regel toe voor uw IP-adres om verbinding met het Amazon Redshift-cluster toe te staan.

  1. Zoek de beveiligingsgroep met de naam RC Default Security Group.
  2. Verkrijg het publieke IP-adres van uw machine.
  3. Voeg een inkomende regel toe voor dit IP-adres en de standaardpoort voor Amazon Redshift 5439.

Voltooi de resterende claimregels

Nadat u de IAM-identiteitsprovider en -rollen hebt ingericht, voegt u een claimregel toe om SAML-rollen te definiëren. We voegen een regel voor klantclaims toe met de naam Roles. Het vindt AD-groepen met het voorvoegsel role_ en vervangt deze door een gecombineerde ARN-tekenreeks. Let op de ARN's van de bronnen waar de partitie zich bevindt aws-cn. Vervangen AWS_ACCOUNT met uw AWS-account-ID. De volgende tabel laat zien hoe de geselecteerde AD-groepen worden omgezet in IAM-rol ARN's.

Geselecteerde advertentiegroep Getransformeerde IAM-rol ARN
role_data_scientist arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
role_data_engineer arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_engineer

Regel voor claimende partij

Om de claimregel toe te voegen, opent u de AD FS-beheerconsole in uw Windows Server en voert u de volgende stappen uit:

  1. Kies Vertrouwende partijvertrouwenen kies vervolgens de vertrouwende partij voor AWS China.
  2. Kies Beleid voor claimuitgifte bewerken, kies dan Rol toevoegen.
  3. Op de Regelsjabloon claimen menu, kies Claims verzenden met een aangepaste regel.
  4. Voor Naam claimregel, ga naar binnen Roles.
  5. In het Aangepaste regel sectie, voer het volgende in:
c:[Type == "http://temp/variable", Value =~ "(?i)^role_"]
=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role",
Value = RegExReplace(c.Value, "role_", "arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_"));

De optionele parameters of DbUser, AutoCreate en DbGroups kan worden geleverd via JDBC-verbindingsparameters of SAML-attribuutwaarden. Het voordeel van gebruikersfederatie is dat gebruikers centraal op één plek kunnen worden beheerd. Daarom, de DbUser waarde moet automatisch worden geleverd door het SAML-kenmerk. De AutoCreate parameter moet altijd zijn true, anders moet u vooraf DB-gebruikers maken. eindelijk, de DbGroups parameter kan worden geleverd door SAML-kenmerken, op voorwaarde dat een dergelijke relatie is gedefinieerd in AD.

Om samen te vatten, raden we aan om ten minste: DbUser en AutoCreate in SAML-attributen, zodat de eindgebruiker tijd kan besparen door kortere verbindingsreeksen samen te stellen. In ons voorbeeld bieden we alle drie de parameters via SAML-attributen.

  1. Voeg een klantclaimregel toe met de naam DbUser. We gebruiken een e-mailadres als waarde voor: DbUser:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory",
types = ("https://redshift.amazon.com/SAML/Attributes/DbUser"),
query = ";mail;{0}", param = c.Value);

U kunt ook een Security Accounts Manager (SAM)-accountnaam kiezen, dit is meestal de gebruikersnaam van het e-mailadres. Het gebruik van een e-mailadres speelt een belangrijke rol bij het bepalen van het IAM-rolbeleid. We komen later op deze kwestie terug.

  1. Voeg de aangepaste claimregel toe met de naam AutoCreate:
=> issue(type = "https://redshift.amazon.com/SAML/Attributes/AutoCreate", value = "true");

  1. Voeg een klantclaimregel toe met de naam DbGroups. Het vindt alle AD-groepen met het voorvoegsel group_ en geeft ze weer als waarden voor DbGroups:
c:[Type == "http://temp/variable", Value =~ "(?i)^group_"]
=> issue(Type = "https://redshift.amazon.com/SAML/Attributes/DbGroups", Value = c.Value);

U kunt testen of de voorgaande instelling correct is door: het verkrijgen van de SAML-reactie via uw browser.

  1. Bezoek https://yourcompany.com/adfs/ls/IdpInitiatedSignOn.aspx op uw Windows Server, log in met gebruiker clementen controleer of de volgende SAML-kenmerken bestaan. Voor gebruiker jimmy, de rol is rc_data_engineer en de DB-groep bevat alleen group_pharmacy.
<AttributeStatement> <Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group_pharmacy</AttributeValue> <AttributeValue>group_oncology</AttributeValue> </Attribute>
</AttributeStatement>

De voorgaande SAML-kenmerknamen zijn geverifieerd en geldig voor AWS China-regio's. De URL's eindigen op amazon.com. Het is onjuist om ze te veranderen in amazonaws.cn or amazon.cn.

Maak verbinding met Amazon Redshift met een SQL-client

We gebruiken op JDBC gebaseerde SQL-werkbank/J (SQL-client) om verbinding te maken met het Amazon Redshift-cluster. Amazon Redshift gebruikt een DB-groep om DB-gebruikers te verzamelen. De databaserechten worden collectief beheerd op groepsniveau. In dit bericht duiken we niet diep in privilegebeheer. U moet echter de voorgaande twee DB-groepen maken.

  1. Maak verbinding met het ingerichte cluster en maak de groepen. U kunt verbinding maken op de AWS Management Console via de query-editor met tijdelijke inloggegevens, of via een SQL-client met databasegebruiker admin en wachtwoord. Het wachtwoord wordt opgeslagen in AWS-geheimenmanager. Mogelijk hebt u de juiste machtigingen nodig voor de bovenstaande bewerkingen.
create group group_oncology;
create group group_pharmacy;

  1. Volg de instructies in Maak verbinding met uw cluster met behulp van SQL Workbench/J om de SQL-client en het Amazon Redshift JDBC-stuurprogramma te downloaden en te installeren.

We raden de aan JDBC-stuurprogramma versie 2.1 met AWS SDK-stuurprogramma-afhankelijke bibliotheken.

  1. Test of het cluster verbindbaar is via het eindpunt. De primaire gebruikersnaam is admin. De geheime waarde van het wachtwoord van het cluster haal je op via Secrets Manager. Specificeer DSILogLevel en LogPath naar chauffeurslogboeken verzamelen en hulp bij de diagnose. De verbindingsreeks ziet eruit als de volgende code. Vervangen CLUSTER_ENDPOINT met de juiste waarde en verwijder alle regelonderbrekers. We splitsen de regel voor de leesbaarheid.
jdbc:redshift://CLUSTER_ENDPOINT.cn-north-1.redshift.amazonaws.com.cn:5439/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp

Voor AWS China-regio's, één extra JDBC-stuurprogrammaoptie loginToRp moet worden ingesteld als u een afzonderlijke vertrouwende partij instelt voor de AWS China-regio's. Als een AD-gebruiker is toegewezen aan meer dan één AWS-rol, gebruik dan in de verbindingsreeks preferred_role om de exacte rol op te geven die moet worden aangenomen voor federatieve toegang.

  1. Kopieer de rol ARN direct en let op de aws-cn partitie.

Als de gebruiker slechts aan één rol is toegewezen, kan deze optie worden weggelaten.

  1. vervangen CLUSTER_ID met de juiste cluster-ID. Voer voor de gebruikersnaam . in yourcompanyclement; voer voor het wachtwoord de referentie van AD in:
jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist

  1. Wanneer u verbonden bent, voert u de SQL-instructie uit zoals weergegeven in de volgende schermafbeelding.

De gebruiker voorafgegaan door IAMA geeft aan dat de gebruiker verbinding heeft gemaakt met federatieve toegang en automatisch is gemaakt.

SQL Workbench om gebruikers te ondervragen

  1. Als optionele stap kunt u in de verbindingsreeks de DbUser, AutoCreate en DbGroups parameters.

Parameters uit de verbindingsreeks staan ​​vóór die van SAML-kenmerken. We raden u aan om minimaal DbUser en AutoCreate via SAML-attributen. Als het moeilijk is om DB-groepen in AD-gebruikers te beheren of als u flexibiliteit wilt, specificeer dan: DbGroups in de verbindingsreeks. Zie de volgende code:

jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
;DbUser=clement@yourcompany.com
;AutoCreate=true
;DbGroups=group_oncology

Gebruik een e-mail- of SAM-accountnaam als DB-gebruiker

Het rollenbeleid volgt de voorbeeldbeleid voor het gebruik van GetClusterCredentials. Het staat verder toe redshift:DescribeClusters op het cluster omdat de rol het clustereindpunt en de poort opvraagt ​​op basis van de id en regio. Om ervoor te zorgen dat de DB-gebruiker dezelfde is als de AD-gebruiker, gebruiken we in dit bericht de volgende voorwaarde om te controleren, waar ROLE_ID is de unieke identificatie van de rol:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}"}}

In het voorbeeldbeleid wordt de volgende voorwaarde gebruikt:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}@yourcompany.com"}}

Het verschil is duidelijk. De aws:userid bevat de RoleSessionName, wat het e-mailadres is. De SAM-accountnaam is de tekenreeks vóór @ in het e-mailadres. Omdat de parameter connection string vóór de parameter SAML-attribuut staat, vatten we de mogelijke gevallen als volgt samen:

  • Als SAML-kenmerken bevatten: DbUser:
    • Als de voorwaardewaarde een domeinachtervoegsel bevat:
      • Als het DbUser SAML-kenmerkwaarde is een e-mailadres, DbUser moet in de verbindingsreeks staan ​​zonder het domeinachtervoegsel.
      • Als het DbUser SAML-kenmerkwaarde is een SAM-accountnaam, DbUser kan worden weggelaten in de verbindingsreeks. Anders mag de waarde geen domeinachtervoegsel bevatten.
    • Als de voorwaardewaarde geen domeinachtervoegsel bevat:
      • Als het DbUser SAML-kenmerkwaarde is een e-mailadres, DbUser kan worden weggelaten in de verbindingsreeks. Anders moet de waarde een domeinachtervoegsel bevatten.
      • Als het DbUser SAML-kenmerkwaarde is een SAM-accountnaam, DbUser moet in de verbindingsreeks staan ​​met een domeinachtervoegsel.
  • Als SAML-kenmerken niet bevatten: DbUser:
    • Als de voorwaardewaarde een domeinachtervoegsel bevat, DbUser moet in de verbindingsreeks staan ​​zonder een domeinachtervoegsel.
    • Als de voorwaardewaarde geen domeinachtervoegsel bevat, DbUser kan worden weggelaten in de verbindingsreeks, omdat RoleSessionName waarde die het e-mailadres is, fungeert als DbUser. Anders moet de waarde een domeinachtervoegsel bevatten.

Workflow voor beoordeling van IAM-beleidsvoorwaarden

Probleem oplossen

Federatieve toegang tot Amazon Redshift is een niet-triviaal proces. Het bestaat echter uit kleinere stappen die we kunnen verdelen en overwinnen als er zich problemen voordoen. Raadpleeg het toegangsschema in het oplossingsoverzicht. We kunnen het proces opsplitsen in drie zinnen:

  1. Is op SAML gebaseerde federatie succesvol? Controleer dit door naar de pagina voor eenmalige aanmelding van AD FS te gaan en zorg ervoor dat u zich kunt aanmelden bij de console met de federatieve rol. Configureert u de vertrouwende partij met het AWS China-specifieke metadatadocument? Verkrijg het SAML-antwoord en controleer of de bestemming is: https://signin.amazonaws.cn/saml. Zijn de ARN- en IAM-rol ARN's van de SAML-provider correct? Controleer of de vertrouwensrelatie van de rol de juiste waarde bevat voor: SAML:aud. Voor andere mogelijke controlepunten, zie: Problemen met SAML 2.0-federatie met AWS oplossen.
  2. Is het rolbeleid correct? Als op SAML gebaseerde federatie is gelukt, controleert u of het rolbeleid correct is. Vergelijk de jouwe met die in dit bericht. Heb jij gebruikt aws WAAR aws-cn zou gebruikt moeten worden? Als de polisvoorwaarde een domeinachtervoegsel bevat, is dit dan het juiste domeinachtervoegsel? U kunt het gebruikte domeinachtervoegsel verkrijgen als u de foutmelding krijgt dat de veronderstelde rol niet is geautoriseerd om een ​​actie uit te voeren.
  3. Maakt de SQL-client verbinding? Is de cluster-ID correct? Zorg ervoor dat uw verbindingsreeks de . bevat loginToRp optie en verwijst naar de vertrouwende partij van AWS China. Als er meerdere IAM-rollen zijn toegewezen, zorg er dan voor dat: preferred_role is een van hen met de juiste rol ARN. U kunt de lijst met rollen ophalen in het SAML-antwoord. Probeer in te stellen ssl_insecure naar waar tijdelijk voor debuggen. Controleer de vorige paragraaf en zorg ervoor dat de DbUser correct wordt gebruikt of ingesteld volgens de DbUser SAML-kenmerk en voorwaardewaarde voor aws:user. Schakel de stuurprogrammalogboeken in en ontvang daar debug-hints. Soms moet u de SQL-client opnieuw opstarten om de cache te wissen en het opnieuw te proberen.

Beveiligingsproblemen

In een productieomgeving raden we aan de volgende beveiligingsinstellingen toe te passen, die in dit bericht niet worden gebruikt.

Voer voor het Amazon Redshift-cluster het volgende uit:

  • Schakel de openbaar toegankelijke optie uit en plaats het cluster in een privé- of geïsoleerde subnetgroep
  • Versleutel het cluster, bijvoorbeeld met een door de klant beheerd AWS Sleutelbeheerservice (AWS KMS) sleutel
  • Schakel verbeterde VPC-routering in zodat het netwerk uw VPC niet verlaat
  • Configureer het cluster om vereisen Secure Sockets Layer (SSL) en eenrichtings SSL-authenticatie gebruiken

Voor de IAM federatieve rollen:

  • Specificeer de exacte DB-groepen voor actie redshift:JoinGroup. Als u een jokerteken wilt gebruiken, zorg er dan voor dat deze geen ongewenste DB-groepen toestaat.
  • Check StringEquals For aws:user tegen de rol-ID samen met de Amazon Redshift DB-gebruiker. Deze toestand kan worden gecontroleerd op: GetClusterCredentials, CreateClusterUser en JoinGroup acties. Raadpleeg de voorbeeldcode voor gedetailleerde codes.

In Amazon Redshift wordt de DB-groep gebruikt om privileges te beheren voor een verzameling DB-gebruikers. Een DB-gebruiker sluit zich aan bij sommige DB-groepen tijdens een inlogsessie en krijgt de privileges die aan de groepen zijn gekoppeld. Zoals we eerder hebben besproken, kunt u de SAML-kenmerkwaarde of de verbindingseigenschap gebruiken om de DB-groepen op te geven. Het Amazon Redshift-stuurprogramma geeft de voorkeur aan de waarde van de verbindingsreeks boven die van het SAML-kenmerk. Als gevolg hiervan kan de eindgebruiker de DB-groepen in de verbindingsreeks overschrijven. Om de bevoegdheden die een DB-gebruiker kan krijgen te beperken, moet het IAM-rolbeleid daarom beperken tot welke DB-groepen de DB-gebruiker veilig mag deelnemen, anders bestaat er mogelijk een beveiligingsrisico. Het volgende beleidsfragment toont een dergelijk risico. Volg altijd de principe van de minste privileges bij het definiëren van toestemmingsbeleid.

{ "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "*"
}

Opruimen

Voer de volgende opdracht uit om de bronnen te vernietigen en geen kosten meer te maken:

cdk destroy redshift-cn --force

Verwijder de gebruikers en groepen die zijn gemaakt in de AD FS. Verwijder ten slotte de Relying Party Trust voor AWS China Regions in uw AD FS als u deze niet meer nodig hebt.

Conclusie

In dit bericht hebben we u uitgelegd hoe u verbinding kunt maken met Amazon Redshift in China met federatieve toegang op basis van AD FS. AWS China-regio's bevinden zich in een andere partitie dan andere AWS-regio's, dus u moet tijdens de configuratie speciale aandacht besteden. Samengevat moet u de AWS-bronnen ARN's controleren met de aws-cn partitie, SAML-gebaseerde federatie met het AWS China-specifieke metadatadocument en een Amazon Redshift JDBC-stuurprogramma met extra verbindingsopties. Dit bericht bespreekt ook verschillende gebruiksscenario's voor de redshift:Dbuser parameter en biedt algemene suggesties voor probleemoplossing.

Voor meer informatie wordt verwezen naar de Handleiding voor Amazon Redshift-clusterbeheer. Vind de code die voor dit bericht is gebruikt in het volgende GitHub-repository.


Over de auteurs


Clemens YuanWenjun Yuan
is een Cloud Infra Architect in AWS Professional Services gevestigd in Chengdu, China. Hij werkt met verschillende klanten, van startups tot internationale ondernemingen, en helpt hen bij het bouwen en implementeren van oplossingen met state-of-the-art cloudtechnologieën en om meer te bereiken in hun cloudverkenningen. In zijn vrije tijd leest hij graag poëzie en reist hij de wereld rond.

Khoa NguyenKhoa Nguyen is een Big Data Architect in AWS Professional Services. Hij werkt samen met grote zakelijke klanten en AWS-partners om de bedrijfsresultaten van klanten te versnellen door expertise te bieden op het gebied van Big Data en AWS-services.

Jewei Li is een data-architect bij AWS Professional Services, gevestigd in Shanghai, China. Hij werkt met verschillende zakelijke klanten aan het ontwerpen en bouwen van datawarehousing- en datameeroplossingen op AWS. In zijn vrije tijd houdt hij van lezen en sporten.

spot_img

Laatste intelligentie

spot_img