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.
Steuern Sie den Zugriff auf Kinesis Video Streams-Ressourcen mit AWS IoT
In diesem Abschnitt wird beschrieben, wie Sie es einem Gerät (z. B. einer Kamera) ermöglichen, Audio- und Videodaten nur an einen bestimmten Kinesis-Videostream zu senden. Sie können dies tun, indem Sie den AWS IoT Anmeldeinformationsanbieter und eine AWS Identity and Access Management (IAM-) Rolle verwenden.
Geräte können X.509 Zertifikate verwenden, um AWS IoT mithilfe der gegenseitigen TLS-Authentifizierungsprotokolle eine Verbindung herzustellen. Andere AWS-Services (z. B. Kinesis Video Streams) unterstützen keine zertifikatsbasierte Authentifizierung, können aber mithilfe von AWS Anmeldeinformationen im Format AWS Signature Version 4 aufgerufen werden. Der Signature Version 4-Algorithmus erfordert in der Regel, dass der Anrufer über eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel verfügt. AWS IoT hat einen Anmeldeinformationsanbieter, der es Ihnen ermöglicht, das integrierte X.509 Zertifikat als eindeutige Geräteidentität zur Authentifizierung von AWS Anfragen (z. B. Anfragen an Kinesis Video Streams) zu verwenden. Dadurch entfällt die Notwendigkeit, eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel auf Ihrem Gerät zu speichern.
Der Anmeldeinformationsanbieter authentifiziert einen Client (in diesem Fall ein Kinesis Video Streams-SDK, das auf der Kamera ausgeführt wird, von der Sie Daten an einen Videostream senden möchten) mithilfe eines X.509 Zertifikats und stellt ein temporäres Sicherheitstoken mit eingeschränkten Rechten aus. Sie können das Token verwenden, um jede AWS Anfrage zu signieren und zu authentifizieren (in diesem Fall einen Anruf an die Kinesis Video Streams). Weitere Informationen finden Sie unter Autorisieren von direkten Aufrufen von Diensten. AWS
Für diese Art der Authentifizierung der Anfragen Ihrer Kamera an Kinesis Video Streams müssen Sie eine IAM-Rolle erstellen und konfigurieren und der Rolle entsprechende IAM-Richtlinien zuordnen, sodass der AWS IoT Anmeldeinformationsanbieter die Rolle in Ihrem Namen übernehmen kann.
Weitere Informationen AWS IoT dazu finden Sie in der Dokumentation. AWS IoT Core Weitere Informationen über IAM finden Sie unter AWS Identity and Access Management (IAM)
Themen
AWS IoT ThingName als Stream-Name
Themen
Schritt 1: Erstellen Sie eine AWS IoT Dingstyp und ein AWS IoT Objekt
AWS IoT In ist ein Ding eine Repräsentation eines bestimmten Geräts oder einer logischen Entität. In diesem Fall steht ein AWS IoT Ding für Ihren Kinesis-Videostream, für den Sie die Zugriffskontrolle auf Ressourcenebene konfigurieren möchten. Um ein Ding zu erstellen, müssen Sie zuerst einen Dingtyp erstellen. AWS IoT Sie können Dingtypen verwenden AWS IoT , um Beschreibungs- und Konfigurationsinformationen zu speichern, die allen Dingen gemeinsam sind, die demselben Dingtyp zugeordnet sind.
-
Der folgende Beispielbefehl erstellt einen Objekttyp
kvs_example_camera:aws --profile default iot create-thing-type --thing-type-name kvs_example_camera > iot-thing-type.json -
Dieser Beispielbefehl erstellt das
kvs_example_camera_streamDing des Typskvs_example_cameraDing:aws --profile default iot create-thing --thing-name kvs_example_camera_stream --thing-type-name kvs_example_camera > iot-thing.json
Schritt 2: Erstellen Sie eine IAM-Rolle, die übernommen werden soll von AWS IoT
IAM-Rollen sind Benutzern insofern ähnlich, als eine Rolle eine AWS Identität mit Berechtigungsrichtlinien ist, die festlegen, was die Identität tun kann und was nicht. AWS Eine Rolle kann von jedem übernommen werden, der sie benötigt. Wenn Sie eine Rolle annehmen, erhalten Sie temporäre Sicherheitsanmeldeinformationen für Ihre Rollensitzung.
Die Rolle, die Sie in diesem Schritt erstellen, kann übernommen werden, AWS IoT um temporäre Anmeldeinformationen vom Security Token Service (STS) abzurufen, wenn Autorisierungsanfragen für Anmeldeinformationen vom Client ausgeführt werden. In diesem Fall ist der Client das Kinesis Video Streams SDK, das auf Ihrer Kamera ausgeführt wird.
Führen Sie die folgenden Schritte aus, um diese IAM-Rolle zu erstellen und zu konfigurieren:
-
Erstellen Sie eine IAM-Rolle.
Der folgende Beispielbefehl erstellt eine IAM-Rolle mit dem Namen
KVSCameraCertificateBasedIAMRole:aws --profile default iam create-role --role-name KVSCameraCertificateBasedIAMRole --assume-role-policy-document 'file://iam-policy-document.json' > iam-role.jsonSie können die folgende JSON-Datei für die Vertrauensrichtlinie
iam-policy-document.jsonverwenden: -
Hängen Sie als Nächstes eine Berechtigungsrichtlinie an die IAM-Rolle an, die Sie zuvor erstellt haben. Diese Berechtigungsrichtlinie ermöglicht die selektive Zugriffskontrolle (eine Teilmenge der unterstützten Vorgänge) für eine AWS Ressource. In diesem Fall ist die AWS Ressource der Videostream, den Ihre Kamera Daten senden soll. Mit anderen Worten, sobald alle Konfigurationsschritte abgeschlossen sind, kann diese Kamera Daten nur an diesen Videostream senden.
aws --profile default iam put-role-policy --role-name KVSCameraCertificateBasedIAMRole --policy-name KVSCameraIAMPolicy --policy-document 'file://iam-permission-document.json'Sie können das folgende IAM-Richtlinien-JSON für Folgendes
iam-permission-document.jsonverwenden:Beachten Sie, dass diese Richtlinie die angegebenen Aktionen nur für einen Videostream (AWS Ressource) autorisiert, der durch den Platzhalter angegeben wird.
(${credentials-iot:ThingName})Dieser Platzhalter nimmt den Wert des Ding-Attributs an AWS IoT ,ThingNamewenn der Anbieter der AWS IoT Anmeldeinformationen den Namen des Videostreams in der Anfrage sendet. -
Erstellen Sie als Nächstes einen Rollenalias für Ihre IAM-Rolle. Rollenalias ist ein alternatives Datenmodell, das auf die IAM-Rolle verweist. Eine Anforderung eines AWS IoT Anmeldeinformationsanbieters muss einen Rollenalias enthalten, der angibt, welche IAM-Rolle übernommen werden muss, um die temporären Anmeldeinformationen vom STS zu erhalten.
Mit dem folgenden Beispielbefehl wird ein Rollenalias namens
KvsCameraIoTRoleAliaserstellt:aws --profile default iot create-role-alias --role-alias KvsCameraIoTRoleAlias --role-arn $(jq --raw-output '.Role.Arn' iam-role.json) --credential-duration-seconds 3600 > iot-role-alias.json -
Jetzt können Sie die Richtlinie erstellen, die es ermöglicht, mithilfe des Rollenalias die Rolle mit dem Zertifikat AWS IoT zu übernehmen (sobald es angehängt ist).
Mit dem folgenden Beispielbefehl wird eine Richtlinie für AWS IoT called erstellt
KvsCameraIoTPolicy.aws --profile default iot create-policy --policy-name KvsCameraIoTPolicy --policy-document 'file://iot-policy-document.json'Sie können den folgenden Befehl verwenden, um das
iot-policy-document.jsonJSON-Dokument zu erstellen:cat > iot-policy-document.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:AssumeRoleWithCertificate" ], "Resource": "$(jq --raw-output '.roleAliasArn' iot-role-alias.json)" } ] } EOF
Schritt 3: Erstellen und konfigurieren Sie das X.509 Zertifikat
Die Kommunikation zwischen einem Gerät (Ihrem Videostream) und AWS IoT ist durch die Verwendung von X.509 Zertifikaten geschützt.
-
Erstellen Sie das Zertifikat, an das Sie die zuvor erstellte Richtlinie anhängen müssen. AWS IoT
aws --profile default iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.pem.key --private-key-outfile private.pem.key > certificate -
Hängen Sie die Richtlinie für AWS IoT (zuvor
KvsCameraIoTPolicyerstellt) an dieses Zertifikat an.aws --profile default iot attach-policy --policy-name KvsCameraIoTPolicy --target $(jq --raw-output '.certificateArn' certificate) -
Hängen Sie Ihr AWS IoT Ding (
kvs_example_camera_stream) an das Zertifikat an, das Sie gerade erstellt haben:aws --profile default iot attach-thing-principal --thing-name kvs_example_camera_stream --principal $(jq --raw-output '.certificateArn' certificate) -
Um Anfragen über den AWS IoT Anmeldeinformationsanbieter zu autorisieren, benötigst du den AWS IoT Anmeldeinformationen-Endpunkt, der für deine AWS-Konto ID eindeutig ist. Sie können den folgenden Befehl verwenden, um den Endpunkt für AWS IoT Anmeldeinformationen abzurufen.
aws --profile default iot describe-endpoint --endpoint-type iot:CredentialProvider --output text > iot-credential-provider.txt -
Zusätzlich zu dem zuvor erstellten X.509 Zertifikat benötigen Sie auch ein CA-Zertifikat, um über TLS eine Vertrauensstellung zum Back-End-Dienst herzustellen. Sie können das CA-Zertifikat mit dem folgenden Befehl abrufen:
curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem
Schritt 4: Testen Sie das AWS IoT Anmeldeinformationen mit Ihrem Kinesis-Videostream
Jetzt können Sie die AWS IoT Anmeldeinformationen testen, die Sie bisher eingerichtet haben.
-
Erstellen Sie zunächst einen Kinesis-Videostream, mit dem Sie diese Konfiguration testen möchten.
Wichtig
Erstellen Sie einen Videostream mit einem Namen, der mit dem Namen des AWS IoT Dings identisch ist, den Sie im vorherigen Schritt erstellt haben (
kvs_example_camera_stream).aws kinesisvideo create-stream --data-retention-in-hours 24 --stream-name kvs_example_camera_stream -
Rufen Sie als Nächstes den Anbieter für AWS IoT Anmeldeinformationen auf, um die temporären Anmeldeinformationen abzurufen:
curl --silent -H "x-amzn-iot-thingname:kvs_example_camera_stream" --cert certificate.pem --key private.pem.key https://IOT_GET_CREDENTIAL_ENDPOINT/role-aliases/KvsCameraIoTRoleAlias/credentials --cacert ./cacert.pem > token.jsonAnmerkung
Sie können den folgenden Befehl verwenden, um Folgendes abzurufen
IOT_GET_CREDENTIAL_ENDPOINT:IOT_GET_CREDENTIAL_ENDPOINT=`cat iot-credential-provider.txt`Die JSON-Ausgabe enthält die
accessKeyZeichensecretKey,, und diesessionToken, mit denen Sie auf die Kinesis-Videostreams zugreifen können. -
Für Ihren Test können Sie diese Anmeldeinformationen verwenden, um die Kinesis Video
DescribeStreamStreams-API für denkvs_example_camera_streamBeispielvideostream aufzurufen.AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name kvs_example_camera_stream
Schritt 5: Bereitstellen AWS IoT Zertifikate und Anmeldeinformationen im Dateisystem Ihrer Kamera und Streamen von Daten in Ihren Videostream
Anmerkung
Die Schritte in diesem Abschnitt beschreiben das Senden von Medien an einen Kinesis-Videostream von einer Kamera, die den Verwenden Sie die C++ Producer-Bibliothek verwendet.
-
Kopieren Sie das X.509 Zertifikat, den privaten Schlüssel und das in den vorherigen Schritten generierte CA-Zertifikat in das Dateisystem Ihrer Kamera. Geben Sie die Pfade für den Speicherort dieser Dateien, den Rollenaliasnamen und den Endpunkt der AWS IoT Anmeldeinformationen für die Ausführung des
gst-launch-1.0Befehls oder Ihrer Beispielanwendung an. -
Der folgende Beispielbefehl verwendet die AWS IoT Zertifikatsautorisierung, um Videos an Kinesis Video Streams zu senden:
gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrlshort-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="kvs_example_camera_stream" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias"
AWS IoT CertificateId als Streamname
Um Ihr Gerät (z. B. Ihre Kamera) durch AWS IoT etwas darzustellen, aber einen anderen Streamnamen zu autorisieren, können Sie das AWS IoT certificateId Attribut als Ihren Streamnamen verwenden und Kinesis Video Streams-Berechtigungen für den Stream gewähren, indem Sie es verwenden. AWS IoT Die Schritte, um dies zu erreichen, ähneln den zuvor beschriebenen, mit ein paar Änderungen.
-
Ändern Sie die Berechtigungsrichtlinie für Ihre IAM-Rolle (
iam-permission-document.json) wie folgt:Anmerkung
Der Ressourcen-ARN verwendet die Zertifikat-ID als Platzhalter für den Streamnamen. Die IAM-Berechtigung funktioniert, wenn Sie die Zertifikat-ID als Stream-Namen verwenden. Rufen Sie die Zertifikat-ID aus dem Zertifikat ab, sodass Sie sie als Stream-Namen im folgenden Describe-Stream-API-Aufruf verwenden können.
export CERTIFICATE_ID=`cat certificate | jq --raw-output '.certificateId'` -
Überprüfen Sie diese Änderung mit dem describe-stream-CLI-Befehl für Kinesis Video Streams:
AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name ${CERTIFICATE_ID} -
Übergeben Sie die CertificateID an den AWS IoT Anmeldeinformationsanbieter in der Beispielanwendung
im Kinesis Video Streams C++ SDK: credential_provider = make_unique<IotCertCredentialProvider>(iot_get_credential_endpoint, cert_path, private_key_path, role_alias, ca_cert_path, certificateId);Anmerkung
Beachten Sie, dass Sie die an den
thingnameAnmeldeinformationsanbieter weitergeben. AWS IoT Sie könnengetenves verwenden, um den Dingnamen an die Demo-Anwendung zu übergeben, ähnlich wie bei der Übergabe der anderen AWS IoT Attribute. Verwenden Sie die Zertifikat-ID als Streamnamen in den Befehlszeilenparametern, wenn Sie die Beispielanwendung ausführen.
Verwenden Sie AWS IoT Anmeldeinformationen zum Streamen an einen fest codierten Stream-Namen
Um Ihr Gerät (z. B. Ihre Kamera) durch AWS IoT etwas darzustellen, aber das Streaming zu einem bestimmten Amazon Kinesis-Videostream zu autorisieren, müssen Sie Amazon Kinesis Video Streams-Berechtigungen für den verwendeten Stream gewähren. AWS IoT Das Verfahren ist ähnlich wie in den vorherigen Abschnitten, mit einigen Änderungen.
Ändern Sie die Berechtigungsrichtlinie für Ihre IAM-Rolle (iam-permission-document.json) wie folgt:
Kopieren Sie das X.509 in den vorherigen Schritten generierte Zertifikat, den privaten Schlüssel und das CA-Zertifikat in das Dateisystem Ihrer Kamera.
Geben Sie die Pfade für den Speicherort dieser Dateien, den Rollenaliasnamen, den AWS IoT Dingnamen und den Endpunkt der AWS IoT Anmeldeinformationen für die Ausführung des gst-launch-1.0 Befehls oder Ihrer Beispielanwendung an.
Der folgende Beispielbefehl verwendet eine AWS IoT Zertifikatsautorisierung, um Videos an Amazon Kinesis Video Streams zu senden:
gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrlshort-header=TRUE ! rtph264depay ! video/x-h264,format=avc,alignment=au ! h264parse ! kvssink stream-name="YourStreamName" aws-region="YourAWSRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias,iot-thing-name=YourThingName"