Zephyrnet-logo

Beveiliging van Amazon Comprehend API-aanroepen met AWS PrivateLink

Datum:

Amazon begrijpt het ondersteunt nu Amazon virtuele privécloud (Amazon VPC) eindpunten via AWS PrivéLink zodat u veilig API-aanroepen naar Amazon Comprehend kunt starten vanuit uw VPC en het gebruik van het openbare internet kunt vermijden.

Amazon Comprehend is een volledig beheerde service voor natuurlijke taalverwerking (NLP) die machine learning (ML) gebruikt om betekenis en inzichten in tekst te vinden. U kunt Amazon Comprehend gebruiken om tekstdocumenten te analyseren en inzichten te identificeren, zoals sentiment, mensen, merken, plaatsen en onderwerpen in tekst. Geen ML-expertise vereist.

Met AWS PrivateLink hebt u eenvoudig en veilig toegang tot Amazon Comprehend door uw netwerkverkeer binnen het AWS-netwerk te houden, terwijl uw interne netwerkarchitectuur aanzienlijk wordt vereenvoudigd. Het stelt je in staat om privé toegang te krijgen tot Amazon Comprehend API's vanaf je VPC op een schaalbare manier door gebruik te maken van interface VPC-eindpunten. Een VPC-eindpunt is een elastische netwerkinterface in uw subnet met een privé-IP-adres dat dient als toegangspunt voor alle Amazon Comprehend API-aanroepen.

In dit bericht laten we u zien hoe u een VPC-eindpunt instelt en het gebruik van deze privéconnectiviteit afdwingt voor alle verzoeken aan Amazon Comprehend met AWS Identiteits- en toegangsbeheer (IAM) beleid.

Voorwaarden

Voor dit voorbeeld zou u een AWS-account en voldoende toegang om bronnen te creëren in de volgende services:

Overzicht oplossingen

De walkthrough omvat de volgende stappen op hoog niveau:

  1. Zet uw middelen in.
  2. Maak VPC-eindpunten.
  3. Dwing privéconnectiviteit af met IAM.
  4. Gebruik Amazon Comprehend via AWS PrivateLink.

Uw middelen inzetten

Voor uw gemak hebben we een AWS CloudFormatie sjabloon om het maken van alle vereiste AWS-bronnen te automatiseren. Wij gebruiken de us-east-2 Regio in dit bericht, dus de console en URL's kunnen verschillen, afhankelijk van de regio die je selecteert. Om deze sjabloon te gebruiken, voert u de volgende stappen uit:

  1. Kies Start Stack:
  2. Bevestig de volgende parameters, die u op de standaardwaarden kunt laten staan:
    1. SubnetCidrBlock1 - Het primaire IPv4 CIDR-blok dat is toegewezen aan het eerste subnet. De standaardwaarde is 10.0.1.0/24.
    2. SubnetCidrBlock2 - Het primaire IPv4 CIDR-blok dat is toegewezen aan het tweede subnet. De standaardwaarde is 10.0.2.0/24.
  3. Erken dat AWS CloudFormation aanvullende IAM-bronnen kan creëren.
  4. Kies Maak een stapel.

Het aanmaakproces duurt ongeveer 10 minuten.

De CloudFormation-sjabloon maakt namens u de volgende bronnen:

  • Een VPC met twee privé-subnetten in afzonderlijke Beschikbaarheidszones
  • VPC-eindpunten voor privé Amazon S3 en Amazon Comprehend API-toegang
  • IAM-rollen voor gebruik door Lambda en Amazon Comprehend
  • Een IAM-beleid om het gebruik van VPC-eindpunten af ​​te dwingen voor interactie met Amazon Comprehend
  • Een IAM-beleid voor Amazon Comprehend om toegang te krijgen tot gegevens in Amazon S3
  • Een S3-bucket voor het opslaan van open-source data

In de volgende twee secties wordt beschreven hoe u handmatig een VPC-eindpunt voor Amazon Comprehend kunt maken en gebruik kunt afdwingen met een IAM-beleid. Als u de CloudFormation-sjabloon hebt geïmplementeerd en liever de API-aanroepen wilt testen, kunt u doorgaan naar het Amazon Comprehend gebruiken via AWS PrivateLink pagina.

VPC-eindpunten maken

Voer de volgende stappen uit om een ​​VPC-eindpunt te maken:

  1. Kies op de Amazon VPC-console Eindpunten.
  2. Kies Maak een eindpunt.
  3. Voor Servicecategorieselecteer AWS-diensten.
  4. Voor Service Name, kiezen amazonaws.us-oost-2.begrijpen.
  5. Voor VPC, voer de VPC in die u wilt gebruiken.
  6. Voor Beschikbaarheidszone, selecteer de beschikbaarheidszones van uw voorkeur.
  7. Voor DNS-naam inschakelenselecteer Schakel in voor dit eindpunt.

Dit creëert een privé gehoste zone waarmee u toegang krijgt tot de bronnen in uw VPC met aangepaste DNS-domeinnamen, zoals example.com, in plaats van privé IPv4-adressen of privé DNS-hostnamen te gebruiken die door AWS worden verstrekt. De Amazon Comprehend DNS-hostnaam die de AWS-opdrachtregelinterface (CLI) en Amazon Comprehend SDK's gebruiken standaard (https://comprehend.Region.amazonaws.com) wordt omgezet naar uw VPC-eindpunt.

  1. Voor Beveiligingsgroep, kies de beveiligingsgroep die u wilt koppelen aan de netwerkinterface van het eindpunt.

Als u geen beveiligingsgroep opgeeft, wordt de standaardbeveiligingsgroep voor uw VPC gekoppeld.

  1. Kies Maak een eindpunt.

Wanneer de Status veranderd naar available, is uw VPC-eindpunt klaar voor gebruik.

  1. Kies de Beleid tabblad om meer beperkende toegangscontrole toe te passen op het VPC-eindpunt.

Het volgende voorbeeldbeleid beperkt de toegang tot VPC-eindpunten tot een IAM-rol die wordt gebruikt door een Lambda-functie in onze implementatie. U moet het principe van de minste privileges toepassen bij het bepalen van uw eigen beleid. Zie voor meer informatie Toegang tot services beheren met VPC-eindpunten.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "comprehend:DetectEntities", "comprehend:CreateDocumentClassifier" ], "Resource": [ "*" ], "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::#########:role/ComprehendPrivateLink-LambdaExecutionRole" ] } } ] }

Private connectiviteit afdwingen met IAM

Om toegang tot Amazon Comprehend toe te staan ​​of te weigeren op basis van het gebruik van een VPC-eindpunt, hebben we een aws: sourceVpce voorwaarde in het IAM-beleid. Het volgende voorbeeldbeleid biedt specifiek toegang tot het DetectEntiteiten en CreateDocumentClassifier API's alleen wanneer het verzoek uw VPC-eindpunt gebruikt. U kunt extra Amazon begrijpt API's in het gedeelte "Actie" van het beleid of gebruik "begrijpen: *" om ze allemaal op te nemen. U kunt dit beleid aan een IAM-rol koppelen om ervoor te zorgen dat rekenresources die in uw VPC worden gehost, kunnen communiceren met Amazon Comprehend.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ComprehendEnforceVpce", "Effect": "Allow", "Action": [ "comprehend:CreateDocumentClassifier", "comprehend:DetectEntities" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-xxxxxxxx" } } }, { "Sid": "PassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::#########:role/ComprehendDataAccessRole" } ]
}

U moet de VPC-eindpunt-ID vervangen door de eindpunt-ID die u eerder hebt gemaakt. Toestemming om het PassRol API is vereist voor asynchrone bewerkingen in Amazon Comprehend zoals CreateDocumentClassifer en moet worden afgestemd op uw specifieke rol voor gegevenstoegang.

Amazon Comprehend gebruiken via AWS PrivateLink

Om Amazon Comprehend met AWS PrivateLink te gaan gebruiken, voert u de volgende stappen op hoog niveau uit:

  1. Bekijk de Lambda-functie voor API-testen.
  2. Maak de DetectEntities test evenement.
  3. Train een aangepaste classificatie.

Herziening van de Lambda-functie

Om uw Lambda-functie te bekijken, kiest u op de Lambda-console de Lambda-functie die bevat ComprehendPrivateLink in zijn naam.

De VPC sectie van de Lambda-console biedt koppelingen naar de verschillende netwerkcomponenten die automatisch voor u zijn gemaakt tijdens de implementatie van CloudFormation.

De functiecode bevat een voorbeeldprogramma dat gebruikersinvoer nodig heeft om de specifieke Amazon Comprehend-API's op te roepen die worden ondersteund door ons voorbeeld IAM-beleid.

Een testgebeurtenis maken

In deze sectie maken we een gebeurtenis om entiteiten in voorbeeldtekst te detecteren met behulp van een vooraf getraind model.

  1. Van de test vervolgkeuzemenu, kies Maak een nieuw testevenement.
  2. Voor Evenement naam, voer een naam in (bijvoorbeeld DetectEntiteiten).
  3. Vervang de gebeurtenis-JSON door de volgende code:
    { "comprehend_api": "DetectEntities", "language_code": "en", "text": "Amazon.com, Inc. is located in Seattle, WA and was founded July 5th, 1994 by Jeff Bezos, allowing customers to buy everything from books to blenders."
    }

  4. Kies Bespaar om de testgebeurtenis op te slaan.
  5. Kies Bespaar om de Lambda-functie bij te werken.
  6. Kies test om het DetectEntities API.

Het antwoord moet resultaten bevatten die lijken op de volgende code:

{ "Entities": [ { "Score": 0.9266431927680969, "Type": "ORGANIZATION", "Text": "Amazon.com, Inc.", "BeginOffset": 0, "EndOffset": 16 }, { "Score": 0.9952651262283325, "Type": "LOCATION", "Text": "Seattle, WA", "BeginOffset": 31, "EndOffset": 42 }, { "Score": 0.9998188018798828, "Type": "DATE", "Text": "July 5th, 1994", "BeginOffset": 59, "EndOffset": 73 }, { "Score": 0.9999810457229614, "Type": "PERSON", "Text": "Jeff Bezos", "BeginOffset": 77, "EndOffset": 87 } ]
}

U kunt de testgebeurtenis bijwerken om entiteiten uit uw eigen tekst te identificeren.

Een aangepaste classificatie trainen

We laten nu zien hoe u een aangepaste classificatie. Voor trainingsgegevens gebruiken we een versie van het Yahoo-antwoordencorpus dat is voorverwerkt in het formaat dat wordt verwacht door Amazon Comprehend. Dit corpus, beschikbaar op de AWS Open Data Register, wordt in de krant geciteerd Tekst begrijpen vanuit het niets door Xiang Zhang en Yann LeCun. Het wordt ook gebruikt in de post Een aangepaste classifier bouwen met Amazon Comprehend.

  1. Haal de trainingsgegevens op van Amazon S3.
  2. Kies op de Amazon S3-console de voorbeeld-S3-bucket die voor u is gemaakt.
  3. Kies Uploaden en voeg het opgehaalde bestand toe.
  4. Kies het geüploade object en noteer het sleutel.
  5. Keer terug naar de testfunctie op de Lambda-console.
  6. Van de test vervolgkeuzemenu, kies Maak een nieuw testevenement.
  7. Voor Evenement naam, voer een naam in (bijvoorbeeld TrainCustomClassifier).
  8. Vervang de gebeurtenisinvoer door de volgende code:
    { "comprehend_api": "CreateDocumentClassifier", "custom_classifier_name": "custom-classifier-example", "language_code": "en", "training_data_s3_key": "comprehend-train.csv"
    }

  9. Als u de standaardbestandsnaam hebt gewijzigd, moet u het training_data_s3_key overeenkomen.
  10. Kies Bespaar om de testgebeurtenis op te slaan.
  11. Kies Bespaar om de Lambda-functie bij te werken.
  12. Kies test om het CreateDocumentClassifier API.

Het antwoord moet resultaten bevatten die lijken op de volgende code:

{ "DocumentClassifierArn": "arn:aws:comprehend:us-east-2:0123456789:document-classifier/custom-classifier-example"
}

  1. Kies op de Amazon Comprehend-console Aangepaste classificatie om de status van de documentclassificatietraining te controleren.

Na ongeveer 20 minuten is de documentclassificator getraind en beschikbaar voor gebruik.

Schoonmaken

Om toekomstige kosten te voorkomen, verwijdert u de resources die u tijdens deze walkthrough hebt gemaakt nadat u uw tests hebt voltooid.

  1. Verwijder de aangepaste classificatie op de Amazon Comprehend-console.
  2. Leeg op de Amazon S3-console de bucket die voor u is gemaakt.
  3. Als u de geautomatiseerde implementatie heeft gestart, verwijdert u op de AWS CloudFormation-console de juiste stack.

Het verwijderingsproces duurt ongeveer 10 minuten.

Conclusie

Je hebt nu met succes Amazon Comprehend API's aangeroepen met AWS PrivateLink. Het gebruik van IAM-beleid voorkomt dat verzoeken uw VPC verlaten en verbetert uw beveiligingshouding verder. U kunt deze oplossing uitbreiden om veilig extra functies te testen, zoals Amazon Begrijp de realtime eindpunten van aangepaste entiteitsherkenning.

Alle Amazon Comprehend API-aanroepen worden nu ondersteund via AWS PrivateLink. Deze functie bestaat in alle commerciële regio's waar AWS PrivateLink en Amazon Comprehend beschikbaar zijn. Zie voor meer informatie over het beveiligen van Amazon Comprehend Beveiliging in Amazon Comprehend.


Over de auteurs

Dave Williams is een Cloud Consultant voor AWS Professional Services. Hij werkt samen met klanten uit de publieke sector om AI / ML-services veilig te implementeren. In zijn vrije tijd brengt hij graag tijd door met zijn gezin, reist hij en kijkt hij graag naar college football.

Adarsha Subick is een Cloud Consultant voor AWS Professional Services gevestigd in Virginia. Hij werkt samen met klanten uit de publieke sector om hun op AI / ML gerichte zakelijke problemen op te lossen. In zijn vrije tijd houdt hij van boogschieten en hobbyelektronica.

Saman Zarandioon is Sr. Software Development Engineer bij Amazon Comprehend. Hij behaalde een PhD in Computer Science aan de Rutgers University.

Bron: https://aws.amazon.com/blogs/machine-learning/securing-amazon-comprehend-api-calls-with-aws-privatelink/

spot_img

Laatste intelligentie

spot_img