Zephyrnet-logo

Deel uw gegevens veilig tussen AWS-accounts met behulp van AWS Lake Formation

Datum:

Datum meren zijn erg populair geworden bij organisaties die een gecentraliseerde repository willen waarin u al uw gestructureerde gegevens en ongestructureerde gegevens op elke schaal kunt opslaan. Omdat gegevens worden opgeslagen zoals ze zijn, is het niet nodig om deze vooraf te converteren naar een vooraf gedefinieerd schema. Wanneer u nieuwe zakelijke use-cases heeft, kunt u op elk moment eenvoudig nieuwe soorten analyses bovenop het datameer bouwen.

In praktijksituaties is het gebruikelijk dat er vereisten zijn om gegevens die zijn opgeslagen in het datameer te delen met meerdere bedrijven, organisaties of bedrijfseenheden. U wilt bijvoorbeeld uw gegevens verstrekken aan belanghebbenden in een ander bedrijf voor een co-marketingcampagne tussen de twee bedrijven. Voor elk van deze use cases wil de producerende partij data op een veilige en effectieve manier delen, zonder de hele database te hoeven kopiëren.

In augustus 2019 kondigden we de algemene beschikbaarheid aan van: AWS Lake-formatie, een volledig beheerde service waarmee u in enkele dagen eenvoudig een veilig datameer kunt opzetten. De mogelijkheden voor machtigingsbeheer van AWS Lake Formation vereenvoudigen het beveiligen en beheren van gedistribueerde datameren over meerdere AWS-accounts door middel van een gecentraliseerde aanpak, waardoor fijnmazige toegangscontrole tot de AWS lijm Gegevenscatalogus en Amazon eenvoudige opslagservice (Amazon S3) locaties.

Er zijn twee opties om uw databases en tabellen met een ander account te delen met behulp van Lake Formation toegangscontrole voor meerdere accounts:

  • Op tags gebaseerde toegangscontrole van Lake Formation (aanbevolen)
  • Lake Formation benoemde bronnen

In dit bericht leg ik de verschillen tussen deze twee opties uit en begeleid ik je door de stappen om het delen van meerdere accounts te configureren.

Overzicht van op tags gebaseerde toegangscontrole

Lake Formation-toegangsbeheer op basis van tags is een autorisatiestrategie die machtigingen definieert op basis van kenmerken. In Lake Formation worden deze attributen genoemd LF-tags. U kunt LF-tags koppelen aan Data Catalog-resources en Lake Formation-principals. Data Lake-beheerders kunnen machtigingen voor Lake Formation-resources toewijzen en intrekken met behulp van deze LF-tags. Voor meer details over op tags gebaseerde toegangscontrole, zie: Beheer uw data lake eenvoudig op schaal met behulp van op AWS Lake Formation Tag gebaseerde toegangscontrole.

Het volgende diagram illustreert de architectuur van deze methode.

We raden toegangscontrole op basis van tags aan voor de volgende gebruikssituaties:

  • U hebt een groot aantal tabellen en principals waartoe de data lake-beheerder toegang moet verlenen
  • U wilt uw gegevens classificeren op basis van een ontologie en machtigingen verlenen op basis van classificatie
  • De data lake-beheerder wil de machtigingen dynamisch toewijzen, op een losjes gekoppelde manier

U kunt ook toegangscontrole op basis van tags gebruiken om Data Catalog-bronnen (databases, tabellen en kolommen) te delen met externe AWS-accounts.

Overzicht van benoemde bronnen

De Lake Formation-methode met de naam resource is een autorisatiestrategie die machtigingen voor resources definieert. Bronnen omvatten databases, tabellen en kolommen. Data Lake-beheerders kunnen machtigingen voor Lake Formation-resources toewijzen en intrekken. Zien Toegang tot meerdere accounts: hoe het werkt voor meer info.

Het volgende diagram illustreert de architectuur voor deze methode.

We raden aan om benoemde bronnen te gebruiken als de data lake-beheerder de voorkeur geeft aan het expliciet verlenen van machtigingen aan individuele bronnen.

Wanneer u de benoemde resourcemethode gebruikt om Lake Formation-machtigingen voor een Data Catalog-resource te verlenen aan een extern account, gebruikt Lake Formation AWS Resource Access Manager (AWS RAM) om de bron te delen.

Laten we nu eens nader bekijken hoe u met deze twee opties toegang voor meerdere accounts kunt configureren. We verwijzen naar het account dat de brontabel heeft als het producentenaccount en verwijzen naar het account dat toegang nodig heeft tot de brontabel als consumentenaccount.

Configureer de instellingen van Lake Formation Data Catalog in het producentenaccount

Lake Formation biedt zijn eigen model voor machtigingsbeheer. Om achterwaartse compatibiliteit met de AWS Identiteits- en toegangsbeheer (IAM) toestemmingsmodel, de Super toestemming is verleend aan de groep IAMAllowedPrincipals standaard op alle bestaande AWS Glue Data Catalog-bronnen. Ook, Gebruik alleen IAM-toegangscontrole instellingen zijn ingeschakeld voor nieuwe gegevenscatalogusbronnen.

In dit bericht doen we fijnmazige toegangscontrole met behulp van Lake Formation-machtigingen en gebruiken we IAM-beleid voor grofkorrelige toegangscontrole. Zie Methoden voor Fijnmazige toegangscontrole voor details. Daarom, voordat u een AWS CloudFormatie sjabloon voor een snelle installatie, moet u de instellingen van Lake Formation Data Catalog wijzigen in het producentenaccount.

Deze instelling is van invloed op alle nieuw gemaakte databases en tabellen, dus we raden u ten zeerste aan deze zelfstudie in een niet-productie- of nieuw account te voltooien. Als u een gedeeld account gebruikt (zoals het dev-account van uw bedrijf), zorg er dan voor dat dit geen invloed heeft op andere bronnen. Als u liever de standaard beveiligingsinstellingen behoudt, moet u een extra stap uitvoeren bij het delen van bronnen met andere accounts, waarin u de standaard Super toestemming van IAMAllowedPrincipals op de database of tabel. We bespreken de details verderop in dit bericht.

Voer de volgende stappen uit om Lake Formation Data Catalog-instellingen in het producentenaccount te configureren:

  1. Meld u aan bij het producentenaccount als beheerder, of een gebruiker met Lake Formation PutDataLakeSettings API-toestemming.
  2. Op de Lake Formation-console, in het navigatievenster, onder Data catalogus, kiezen Instellingen.
  3. deselecteren Gebruik alleen IAM-toegangscontrole voor nieuwe databases en Gebruik alleen IAM-toegangscontrole voor nieuwe tabellen in nieuwe databases
  4. Kies Bespaar.

Bovendien kunt u r
emove CREATE_DATABASE machtigingen voor IAMAllowedPrincipals voor Administratieve rollen en taken > Database-makers. Alleen dan wordt bepaald wie een nieuwe database kan maken via Lake Formation-machtigingen.

Resources instellen met AWS CloudFormation

We bieden twee CloudFormation-sjablonen in dit bericht: één voor het producentenaccount en één voor het consumentenaccount.

De CloudFormation-sjabloon voor het producentenaccount genereert de volgende bronnen:

  • Een S3-emmer om als datameer te dienen.
  • Een Lambda-functie (voor door Lambda ondersteunde AWS CloudFormation aangepaste bronnen). We gebruiken de functie om voorbeeldgegevensbestanden van de openbare S3-bucket naar uw S3-bucket te kopiëren.
  • IAM-gebruikers en -beleid:
    • DataLakeAdminProducer
  • Een AWS Glue Data Catalog-database, tabel en partitie. Omdat we twee opties introduceren voor het delen van bronnen tussen AWS-accounts, creëert deze sjabloon twee afzonderlijke sets database en tabellen.
  • Lake Formation data lake-instellingen en -machtigingen. Dit bevat:

De CloudFormation-sjabloon voor het consumentenaccount genereert de volgende bronnen:

  • IAM-gebruikers en -beleid:
    • DataLakeAdminConsumer
    • DataAnalyst
  • Een AWS Glue Data Catalog-database. We gebruiken deze database voor het maken van bronkoppelingen naar gedeelde bronnen.

Start de CloudFormation-stack in het producentenaccount

Voer de volgende stappen uit om de CloudFormation-stack in het producentenaccount te starten:

  1. Meld u aan bij de AWS CloudFormation-console van het producentenaccount in de doelregio.
  2. Kies Start stapel:
  3. Kies Volgende.
  4. Voor Stack naam, voer een stapelnaam in, zoals stack-producer.
  5. Voor ProducerDatalakeAdminGebruikersnaam en ProducerDatalakeAdminUserPassword, voer de gebruikersnaam en het wachtwoord in dat u wilt voor de IAM-gebruiker van de data lake-beheerder.
  6. Voor DataLakeBucketName, voer de naam van uw data lake-bucket in. Deze naam moet wereldwijd uniek zijn.
  7. Voor Database naam en Tafel naam, laat de standaardwaarden staan.
  8. Kies Volgende.
  9. Kies op de volgende pagina Volgende.
  10. Bekijk de details op de laatste pagina en selecteer Ik erken dat AWS CloudFormation IAM-bronnen kan creëren.
  11. Kies Maak een stapel.

Start de CloudFormation-stack in het consumentenaccount

Voer de volgende stappen uit om de CloudFormation-stack in het consumentenaccount te starten:

  1. Meld u aan bij de AWS CloudFormation-console van het consumentenaccount in de doelregio.
  2. Kies Start Stack:
  3. Kies Volgende.
  4. Voor Stack naam, voer een stapelnaam in, zoals stack-consumer.
  5. Voor ConsumerDatalakeAdminGebruikersnaam en ConsumerDatalakeAdminUserPassword, voer de gebruikersnaam en het wachtwoord in dat u wilt voor de IAM-gebruiker van de data lake-beheerder.
  6. Voor GegevensanalistGebruikersnaam en DataAnalystGebruikerswachtwoord, voer de gebruikersnaam en het wachtwoord in die u wilt voor de IAM-gebruiker van de data-analist.
  7. Voor Database naam, laat de standaardwaarden staan.
  8. Voor AthenaQueryResultaatS3BucketName, voer de naam in van de S3-bucket die wordt opgeslagen Amazone Athene resultaten opvragen. Als je er geen hebt, maak een S3-bucket.
  9. Kies Volgende.
  10. Kies op de volgende pagina Volgende.
  11. Bekijk de details op de laatste pagina en selecteer Ik erken dat AWS CloudFormation IAM-bronnen kan creëren.
  12. Kies Maak een stapel.

Het maken van een stapel kan ongeveer 1 minuut duren.

(Optioneel) AWS KMS-versleuteling aan de serverzijde

Als de bron S3-bucket is versleuteld met versleuteling aan de serverzijde met een AWS Sleutelbeheerservice (AWS KMS) klanthoofdsleutel (CMK), zorg ervoor dat de IAM-rol die Lake Formation gebruikt om toegang te krijgen tot S3-gegevens, is geregistreerd als de hoofdgebruiker voor de KMS CMK. Standaard is de IAM-rol AWSServiceRoleForLakeFormationDataAccess wordt gebruikt, maar u kunt andere IAM-rollen kiezen bij het registreren van een S3-data lake-locatie. Om de Lake Formation-rol als de KMS-sleutelgebruiker te registreren, kunt u de AWS KMS-console gebruiken of de machtiging rechtstreeks toevoegen aan het sleutelbeleid met behulp van de KMS Zet SleutelPolicy API en de AWS-opdrachtregelinterface (AWS CLI).

U hoeft geen individuele consumentenaccounts toe te voegen aan het hoofdbeleid. Alleen de rol die Lake Formation gebruikt, is vereist. Deze stap is ook niet nodig als de bron-S3-bucket is versleuteld met versleuteling aan de serverzijde met Amazon S3 of een door AWS beheerde sleutel.

Voer de volgende stappen uit om een ​​Lake Formation-rol toe te voegen als de KMS-sleutelgebruiker via de console:

  1. Meld u aan bij de AWS KMS-console als de sleutelbeheerder.
  2. In het navigatievenster, onder Door de klant beheerde sleutels, kies de sleutel die wordt gebruikt om de bron S3-bucket te coderen.
  3. Onder Sleutel gebruikers, kiezen Toevoegen.
  4. kies AWSServiceRoleForLakeFormationDataToegang En kies Toevoegen.

Om de AWS CLI te gebruiken, voert u de volgende opdracht in (replace , en met geldige waarden):

aws kms put-key-policy --key-id <key-id> --policy-name <name-of-key-policy> --policy <key-policy>

Voor meer informatie, zie put-key-beleid.

Vereisten voor het delen van meerdere accounts bij Lake Formation

Voordat resources met Lake Formation worden gedeeld, zijn er vereisten voor zowel de op tags gebaseerde toegangsbeheermethode als de benoemde resourcemethode.

Vereisten voor toegangscontrole op basis van tags voor het delen van meerdere accounts

Zoals beschreven in Op tags gebaseerde toegangscontrole voor meerdere accounts op Lake Formation, voordat u de op tags gebaseerde toegangsbeheermethode kunt gebruiken om toegang voor meerdere accounts tot bronnen te verlenen, moet u het volgende JSON-machtigingsobject toevoegen aan de AWS Glue Data Catalog-resourcepol
ijzig in het producentenaccount. Dit geeft het consumentenaccount toestemming om toegang te krijgen tot de gegevenscatalogus wanneer glue:EvaluatedByLakeFormationTags is waar. Deze voorwaarde geldt ook voor bronnen waarvoor u toestemming hebt verleend met behulp van Lake Formation-toestemmingstags voor het account van de consument. Dit beleid is vereist voor elk AWS-account waaraan u machtigingen verleent.

Het volgende beleid moet binnen een Statement element. We bespreken het volledige IAM-beleid verderop in dit bericht.

{ "Effect": "Allow", "Action": [ "glue:*" ], "Principal": { "AWS": [ "<consumer-account-id>" ] }, "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ], "Condition": { "Bool": { "glue:EvaluatedByLakeFormationTags": true } }
}

Vereisten voor delen via verschillende accounts met benoemde bronnen

Zoals beschreven in Machtigingen voor meerdere accounts beheren met zowel AWS Glue als Lake Formation, als er geen Data Catalog-resourcebeleid in uw account is, gaan de Lake Formation-toekenningen voor meerdere accounts die u maakt gewoon door. Als er echter een Data Catalog-resourcebeleid bestaat, moet u er de volgende verklaring aan toevoegen om ervoor te zorgen dat uw toewijzingen voor meerdere accounts slagen als ze worden gedaan met de benoemde resourcemethode. Als u van plan bent om alleen de benoemde bronmethode te gebruiken, of alleen de op tags gebaseerde toegangsbeheermethode, kunt u deze stap overslaan. In dit bericht evalueren we beide methoden, dus we moeten het volgende beleid toevoegen.

Het volgende beleid moet binnen een Statement element. We bespreken het volledige IAM-beleid in de volgende sectie.

{ "Effect": "Allow", "Action": [ "glue:ShareResource" ], "Principal": { "Service": [ "ram.amazonaws.com" ] }, "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ]
}

Voeg het AWS Glue Data Catalog-resourcebeleid toe met behulp van de AWS CLI

Als we machtigingen voor meerdere accounts verlenen door zowel de op tags gebaseerde methode voor toegangsbeheer als de methode voor benoemde bronnen te gebruiken, moeten we de EnableHybrid argument naar 'true' bij het toevoegen van de voorgaande beleidsregels. Omdat deze optie momenteel niet wordt ondersteund op de console, moeten we de glue:PutResourcePolicy API en AWS CLI.

Maak eerst een beleidsdocument (zoals: policy.json) en voeg de voorgaande twee beleidsregels toe. Vervangen met de account-ID van het AWS-account dat de subsidie ​​ontvangt, met de regio van de gegevenscatalogus die de databases en tabellen bevat waarvoor u machtigingen verleent, en met de producer AWS-account-ID.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "<consumer-account-id>" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ], "Condition": { "Bool": { "glue:EvaluatedByLakeFormationTags": "true" } } } ]
}

Voer de volgende AWS CLI-opdracht in. Vervangen met de juiste waarden (zoals file://policy.json).

aws glue put-resource-policy --policy-in-json <glue-resource-policy> --enable-hybrid TRUE

Voor meer informatie, zie put-resource-beleid.

De op Lake Formation-tag gebaseerde toegangsbeheermethode implementeren

In deze sectie doorlopen we de volgende stappen op hoog niveau:

  1. Definieer een LF-tag.
  2. Wijs de LF-tag toe aan de doelbron.
  3. Verleen LF-tag-machtigingen aan het consumentenaccount.
  4. Verleen gegevensmachtigingen aan het consumentenaccount.
  5. Optioneel, rechten intrekken voor IAMAllowedPrincipals op de database, tabellen en kolommen.
  6. Maak een resourcekoppeling naar de gedeelde tabel.
  7. Maak een LF-tag en wijs deze toe aan de doeldatabase.
  8. Verleen LF-tag-gegevensmachtigingen aan het consumentenaccount.

Definieer een LF-tag

Als u bent aangemeld bij uw producentenaccount, moet u zich afmelden voordat u de volgende stappen uitvoert.

  1. Meld u aan als de data lake-beheerder van het producentenaccount. Gebruik de producentenaccount-ID, IAM-gebruikersnaam (de standaard is: DatalakeAdminProducer) en het wachtwoord dat u hebt opgegeven tijdens het maken van de CloudFormation-stack.
  2. Op de Lake Formation-console, in het navigatievenster, onder machtigingen, en onder Administratieve rollen en taken, kiezen LF-tags.
  3. Kies LF-tag toevoegen.
  4. Geef de sleutel en waarden op. In dit bericht maken we een LF-tag waar de sleutel is Confidentiality en de waarden zijn private, sensitive en public.
  5. Kies LF-tag toevoegen.

Wijs de LF-tag toe aan de doelbron

Als data lake-beheerder kunt u tags aan bronnen koppelen. Als u van plan bent een afzonderlijke rol te gebruiken, moet u mogelijk machtigingen voor het beschrijven en koppelen van de afzonderlijke rol verlenen.

  1. In het navigatievenster, onder Data catalogusselecteer databases.
  2. Selecteer de doeldatabase (lakeformation_tutorial_cross_account_database_tbac) en op de Acties menu, kies LF-tags bewerken.

Voor dit bericht kennen we een LF-tag toe aan een database, maar je kunt ook LF-tags toewijzen aan tabellen en kolommen.

  1. Kies Nieuwe LF-Tag toewijzen.
  2. Voeg de sleutel toe Confidentiality en waarde public.
  3. Kies Bespaar.

Verleen LF-tag toestemming aan het consumentenaccount

Nog steeds in het producentenaccount, verlenen we toestemming aan het consumentenaccount om toegang te krijgen tot de LF-tag.

  1. In het navigatievenster, onder machtigingen, Administratieve rollen en taken, LF-tagrechten, kiezen Grant.
  2. Voor opdrachtgevers, kiezen Externe accounts.
  3. Voer de doel-AWS-account-ID in.

AWS-accounts binnen dezelfde organisatie verschijnen automatisch. Anders moet u de AWS-account-ID handmatig invoeren. Op het moment van schrijven biedt Lake Formation op tags gebaseerde toegangscontrole geen ondersteuning voor het verlenen van toestemming aan organisaties of organisatie-eenheden.

  1. Voor LF-tags, kies de sleutel en waarden van de LF-tag die wordt gedeeld met het consumentenaccount (sleutel Confidentiality en waarde public).
  2. Voor machtigingenselecteer Beschrijven For LF-tagrechten.

LF-tag-machtigingen zijn machtigingen die aan het consumentenaccount worden gegeven. Toekenbare machtigingen zijn machtigingen die het consumentenaccount aan andere principals kan verlenen.

  1. Kies Grant.

Op dit punt moet de beheerder van het datameer van de consument de beleidstag kunnen vinden die wordt gedeeld via de Lake Formation-console van het consumentenaccount, onder machtigingen, Administratieve rollen en taken, LF-tags.

Gegevenstoestemming verlenen aan het consumentenaccount

We bieden nu gegevenstoegang tot het consumentenaccount door een LF-Tag-expressie op te geven en het consumentenaccount toegang te verlenen tot elke tabel of database die overeenkomt met de expressie.

  1. In het navigatievenster, onder machtigingen, Data lake-machtigingen, kiezen Grant.
  2. Voor opdrachtgevers, kiezen Externe accountsen voer de AWS-account-ID van de consument in.
  3. Voor LF-tags of catalogusbronnen, onder Bronnen gematcht door LF-Tags (aanbevolen), kiezen LF-tag toevoegen.
  4. Selecteer de sleutel en waarden van de tag die wordt gedeeld met het consumentenaccount (sleutel Confidentiality en waarde public).
  5. Voor Databasemachtigingenselecteer Beschrijven voor Databasemachtigingen om toegangsrechten op databaseniveau te verlenen.
  6. kies Beschrijven voor Verleenbare machtigingen zodat het consumentenaccount zijn gebruikers machtigingen op databaseniveau kan verlenen.
  7. Voor Tabel- en kolommachtigingenselecteer kies en Beschrijven voor Tabelrechten.
  8. kies kies en Beschrijven voor Verleenbare machtigingen.
  9. Kies Grant.

Toestemming intrekken voor IAMAallowedPrincipals voor de database, tabellen en kolommen (optioneel)

Helemaal aan het begin van deze tutorial hebben we de Lake Formation Data Catalog-instellingen gewijzigd. Als u dat deel hebt overgeslagen, is deze stap vereist. Als u uw Lake Formation Data Catalog-instellingen hebt gewijzigd, kunt u deze stap overslaan.

In deze stap moeten we de standaard intrekken Super toestemming van IAMAllowedPrincipals op de gegevens
basis of tafel. Zien Bestaande gegevenscatalogusbronnen beveiligen voor meer info.

Alvorens toestemming in te trekken voor: IAMAllowedPrincipals, zorg ervoor dat u bestaande IAM-principals de benodigde toestemming hebt verleend via Lake Formation. Dit omvat twee stappen:

  1. IAM-machtiging toevoegen aan de doel-IAM-gebruiker of -rol met de Lake Formation GetDataAccess actie (met IAM-beleid).
  2. Verleen de doel-IAM-gebruiker of -rol met Lake Formation-gegevensmachtigingen (wijzigen, selecteren, enzovoort)

Trek vervolgens de machtigingen in voor IAMAllowedPrincipals. Anders, na het intrekken van machtigingen voor IAMAllowedPrincipals, hebben bestaande IAM-principals mogelijk geen toegang meer tot de doeldatabase of -catalogus.

Intrekking Super toestemming voor IAMAllowedPrincipals is vereist wanneer u het Lake Formation-machtigingsmodel (in plaats van het IAM-beleidsmodel) wilt toepassen om gebruikerstoegang binnen één account of tussen meerdere accounts te beheren met behulp van het Lake Formation-machtigingsmodel. U hoeft de toestemming van niet in te trekken IAMAllowedPrincipals voor andere tabellen waar u het traditionele IAM-beleidsmodel wilt behouden.

Op dit punt moet de data lake-beheerder van het consumentenaccount de database en tabel kunnen vinden die worden gedeeld via de Lake Formation-console van het consumentenaccount, onder Data catalogus, databases. Als dit niet het geval is, controleert u of het volgende correct is geconfigureerd:

  • Zorg ervoor dat de juiste beleidstag en -waarden zijn toegewezen aan de doeldatabases en -tabellen
  • Zorg ervoor dat de juiste tagtoestemming en gegevenstoestemming zijn toegewezen aan het consumentenaccount
  • De standaard intrekken super toestemming van IAMAllowedPrincipals op de database of tabel

Maak een bronlink naar de gedeelde tabel

Wanneer een bron wordt gedeeld tussen accounts, worden de gedeelde bronnen niet in de catalogus van de consumentenaccounts geplaatst. Om ze beschikbaar te maken en de onderliggende gegevens van een gedeelde tabel op te vragen met behulp van services zoals Athena, moeten we een bron link naar de gedeelde tafel. Een bronkoppeling is een Data Catalog-object dat een koppeling is naar een lokale of gedeelde database of tabel. Door een bronlink te maken, kunt u:

  • Wijs een andere naam toe aan een database of tabel die overeenkomt met uw naamgevingsbeleid voor gegevenscatalogusbronnen
  • Gebruik diensten zoals Athena en Amazon Roodverschuivingsspectrum om gedeelde databases of tabellen te doorzoeken

Voer de volgende stappen uit om een ​​bronkoppeling te maken:

  1. Als u bent aangemeld bij uw consumentenaccount, logt u uit.
  2. Meld u aan als de data lake-beheerder van het consumentenaccount. Gebruik de consumentenaccount-ID, IAM-gebruikersnaam (standaard DatalakeAdminConsumer) en wachtwoord dat u hebt opgegeven tijdens het maken van de CloudFormation-stack.
  3. Op de Lake Formation-console, in het navigatievenster, onder Data catalogus, databases, kies de gedeelde database lakeformation_tutorial_cross_account_database_tbac.

Als u de database niet ziet, herhaalt u de vorige stappen om te zien of alles correct is geconfigureerd.

  1. Kies Tabellen bekijken.
  2. Kies de gedeelde tafel amazon_reviews_table_tbac.
  3. Op de Acties menu, kies Maak een resourcekoppeling.
  4. Voor Naam bronlink, voer een naam in (voor dit bericht, amazon_reviews_table_tbac_resource_link).
  5. Onder Database, selecteer de database waarin de bronkoppeling is gemaakt (voor dit bericht heeft de CloudFormation-stack de database gemaakt) lakeformation_tutorial_cross_account_database_consumer).
  6. Kies creëren.

De bronlink verschijnt onder: Data catalogus, Tafels.

Maak een LF-tag en wijs deze toe aan de doeldatabase

Lake Formation-tags bevinden zich in dezelfde catalogus als de bronnen. Dit betekent dat tags die in het producentenaccount zijn gemaakt, niet beschikbaar zijn voor gebruik bij het verlenen van toegang tot de bronkoppelingen in het consumentenaccount. U moet een aparte set LF-tags maken in het consumentenaccount om toegangscontrole op basis van LF-tags te gebruiken bij het delen van de bronkoppelingen in het consumentenaccount. Laten we eerst de LF-tag maken. Raadpleeg de vorige secties voor volledige instructies.

  1. Definieer de LF-tag in het consumentenaccount. Voor dit bericht gebruiken we key Division en waarden sales, marketing en analyst.
  2. Wijs de LF-tag-toets toe Division en waarde analyst naar de database lakeformation_tutorial_cross_account_database_consumer, waar de bronlink is gemaakt.

Verleen LF-tag data toestemming aan de consument

Als laatste stap verlenen we LF-tag data toestemming aan de consument.

  1. In het navigatievenster, onder machtigingen, Data lake-machtigingen, kiezen Grant.
  2. Voor opdrachtgevers, kiezen IAM-gebruikers en -rollenen kies de gebruiker DataAnalyst.
  3. Voor LF-tags of catalogusbronnen, kiezen Bronnen gekoppeld aan LF-tags (aanbevolen).
  4. Kies sleutel Division en waarde analyst.
  5. Voor Databasemachtigingenselecteer Beschrijven voor Databasemachtigingen.
  6. Voor Tabel- en kolommachtigingenselecteer kies en Beschrijven voor Tabelrechten.
  7. Kies Grant.
  8. Herhaal deze stappen voor gebruiker DataAnalyst, waar de LF-tag-toets is Confidentiality en waarde is public.

Op dit punt moet de gebruiker van de gegevensanalist in het consumentenaccount de database- en bronkoppeling kunnen vinden en de gedeelde tabel kunnen doorzoeken via de Athena-console.

Als dit niet het geval is, controleert u of het volgende correct is geconfigureerd:

  • Zorg ervoor dat de bronlink is gemaakt voor de gedeelde tabel
  • Zorg ervoor dat u de gebruiker toegang hebt verleend tot de LF-tag die wordt gedeeld door het producentenaccount
  • Zorg ervoor dat u de gebruiker toegang hebt verleend tot de LF-tag die is gekoppeld aan de bronlink en database waarin de bronlink is gemaakt
  • Controleer of je de juiste LF-tag hebt toegewezen aan de bronlink en aan de database waarin de bronlink is aangemaakt

Implementeer de Lake Formation-methode met de naam resource

Om de benoemde resourcemethode te gebruiken, doorlopen we de volgende stappen op hoog niveau:

  1. Optioneel, toestemming intrekken voor IAMAllowedPrincipals op de database, tabellen en kolommen.
  2. Verleen gegevenstoestemming aan het consumentenaccount.
  3. Accepteer een resourceshare van AWS RAM.
  4. Maak een bronkoppeling voor de gedeelde tabel.
  5. Verleen gegevensmachtiging voor de gedeelde tabel aan de consument.
  6. Verleen gegevenstoestemming voor de bronkoppeling aan de consument.

Toestemming intrekken voor IAMAallowedPrincipals voor de database, tabellen en kolommen (optioneel)

Helemaal aan het begin van deze zelfstudie hebben we de instellingen van Lake Formation Data Catalog gewijzigd. Als u dat deel hebt overgeslagen, is deze stap vereist. Zie de optionele stap in de vorige sectie voor instructies.

Gegevenstoestemming verlenen aan het consumentenaccount

Als u als een andere gebruiker bent aangemeld bij het producentenaccount, moet u zich eerst afmelden.

  1. Meld u aan als de data lake-beheerder van het producentenaccount met behulp van de AWS-account-ID, IAM-gebruikersnaam (standaard is DatalakeAdminProducer) en wachtwoord opgegeven tijdens het maken van de CloudFormation-stack.
  2. In het navigatievenster, onder machtigingen, Data lake-machtigingen, kiezen Grant.
  3. Voor opdrachtgevers, kiezen Externe accountsen voer een of meer AWS-account-ID's in of AWS-organisaties ID's.

Organisaties waartoe het producentenaccount behoort en AWS-accounts binnen dezelfde organisatie verschijnen automatisch. Voer anders handmatig de account-ID of organisatie-ID in.

  1. Voor LF-tags of catalogusbronnen, kiezen Benoemde gegevenscatalogusbronnen.
  2. Onder databases, kies de database lakeformation_tutorial_cross_account_database_named_resource.
  3. Onder Tafels, kiezen Alle tafels.
  4. Voor Tabel- en kolommachtigingenselecteer kies en Beschrijven voor Tabelrechten.
  5. kies kies en Beschrijven voor Verleenbare machtigingen.
  6. Optioneel, voor Gegevensmachtigingenselecteer Eenvoudige toegang op basis van kolommen als machtigingsbeheer op kolomniveau vereist is.
  7. Kies Grant.

Als je de toestemming niet hebt ingetrokken voor: IAMAllowedPrincipals, je krijgt een Toekennen van machtigingen mislukt fout.

Op dit punt zou u moeten zien dat de doeltabel wordt gedeeld via AWS RAM met het consumentenaccount onder: machtigingen, Gegevensmachtigingen.

Accepteer een resourceshare van AWS RAM

Deze stap is alleen vereist voor delen op basis van account-ID's, niet voor delen op organisatiebasis.

  1. Meld u aan als de data lake-beheerder van het consumentenaccount met de IAM-gebruikersnaam (standaard is DatalakeAdminConsumer) en wachtwoord opgegeven tijdens het maken van de CloudFormation-stack.
  2. Op de AWS RAM-console, in het navigatievenster, onder Gedeeld met mij, Resource-aandelen, kies de gedeelde Lake Formation-bron.

De Status moet Pending.

  1. Bevestig de resourcedetails en kies Accepteer het delen van bronnen.

Op dit punt zou de data lake-beheerder van het consumentenaccount de gedeelde bron op de Lake Formation-console moeten kunnen vinden onder: Data catalogus, databases.

Maak een bronlink voor de gedeelde tabel

Volg de eerder beschreven instructies om een ​​bronkoppeling voor een gedeelde tabel te maken. Geef de bronlink een naam amazon_reviews_table_named_resource_resource_link. Maak de bronlink in de database lakeformation_tutorial_cross_account_database_consumer.

Geef de consument toestemming voor gegevens voor de gedeelde tabel

Voer de volgende stappen uit om gegevensrechten voor de gedeelde tabel aan de consument te verlenen:

  1. In het navigatievenster, onder machtigingen, Data lake-machtigingen, kiezen Grant.
  2. Voor opdrachtgevers, kiezen IAM-gebruikers en -rollenen kies de gebruiker DataAnalyst.
  3. Voor LF-tags of catalogusbronnen, kiezen Benoemde gegevenscatalogusbronnen.
  4. Onder databases, kies de database lakeformation_tutorial_cross_account_database_named_resource.

Als u de database niet ziet in de vervolgkeuzelijst, kiest u Laad meer.

  1. Onder Tafels, kies de tafel amazon_reviews_table_named_resource.
  2. Voor Tabel- en kolommachtigingenselecteer kies en Beschrijven voor Tabelrechten.
  3. Kies Grant.

Verleen gegevenstoestemming voor de bronlink aan de consument

Naast het verlenen van toestemming aan de data lake-gebruiker om toegang te krijgen tot de gedeelde tabel, moet u de data lake-gebruiker ook toestemming verlenen om toegang te krijgen tot de bronkoppeling.

  1. In het navigatievenster, onder machtigingen, Data lake-machtigingen, kiezen Grant.
  2. Voor opdrachtgevers, kiezen IAM-gebruikers en -rollenen kies de gebruiker DataAnalyst.
  3. Voor LF-tags of catalogusbronnen, kiezen Benoemde gegevenscatalogusbronnen.
  4. Onder databases, kies de database lakeformation_tutorial_cross_account_database_consumer.
  5. Onder Tafels, kies de tafel amazon_reviews_table_named_resource_resource_link.
  6. Voor Rechten voor bronlinkselecteer Beschrijven voor Rechten voor bronlink.
  7. Kies Grant.

Op dit punt moet de gebruiker van de gegevensanalist in het consumentenaccount de database- en bronkoppeling kunnen vinden en de gedeelde tabel kunnen doorzoeken via de Athena-console.

Als dit niet het geval is, controleert u of het volgende correct is geconfigureerd:

  • Zorg ervoor dat de bronlink is gemaakt voor de gedeelde tabel
  • Zorg ervoor dat u de gebruiker toegang hebt verleend tot de tafel die wordt gedeeld door het producentenaccount
  • Zorg ervoor dat u de gebruiker toegang hebt verleend tot de bronkoppeling en database waarin de bronkoppeling is gemaakt

Opruimen

Om de bronnen die in deze zelfstudie zijn gemaakt op te schonen, verwijdert of wijzigt u de volgende bronnen:

  • Producentenaccount:
    • AWS RAM-bron delen
    • Lake Formation-tags
    • CloudFormation-stapel
    • Instellingen voor Lake Formation
    • AWS Glue Data Catalog-instellingen
  • Consumentenaccount:
    • Lake Formation-tags
    • CloudFormation-stapel

Samengevat

Met Lake Formation cross-account delen kunt u gegevens delen tussen AWS-accounts zonder de daadwerkelijke gegevens te kopiëren. Bovendien biedt het zowel de producent als de consument op een flexibele manier controle over gegevensrechten. In dit bericht hebben we twee verschillende opties geïntroduceerd om te verwijzen naar catalogusgegevens van een ander account door gebruik te maken van de functies voor toegang voor meerdere accounts die door Lake Formation worden geboden:

  • Toegangscontrole op basis van tags
  • benoemde bron

De op tags gebaseerde methode voor toegangsbeheer wordt aanbevolen wanneer er veel resources en entiteiten bij betrokken zijn. Hoewel het lijkt alsof deze optie meer stappen vereist, helpt op tags gebaseerde toegangscontrole beheerders van data lakes om de relaties tussen elke gebruiker en tabel dynamisch te beheren via tags. De benoemde resourcemethode biedt de data lake-beheerder een eenvoudigere manier om catalogusmachtigingen te beheren. U kunt de methode kiezen die het beste bij uw behoefte past.


Over de auteur

Yumiko Kanasugi is een Solutions Architect bij Amazon Web Services Japan en ondersteunt digitale native business-klanten om AWS te gebruiken.

Bron: https://aws.amazon.com/blogs/big-data/securely-share-your-data-across-aws-accounts-using-aws-lake-formation/

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?