View a markdown version of this page

Cross-service verwirrt, stellvertretender Präventionsdienst - AWS IoT Core

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.

Cross-service verwirrt, stellvertretender Präventionsdienst

Das Confused-Deputy-Problem ist ein Sicherheitsproblem, bei dem eine Entität, die nicht über die Berechtigung zum Ausführen einer Aktion verfügt, eine Entität mit größeren Rechten zwingen kann, die Aktion auszuführen. Insofern AWS kann dienststellenübergreifender Identitätswechsel zu einem verwirrten Stellvertreterproblem führen. Cross-service Ein Identitätswechsel kann auftreten, wenn ein Dienst (der aufrufende Dienst) einen anderen Dienst (den aufgerufenen Dienst) anruft. Der Anruf-Service kann so manipuliert werden, dass er seine Berechtigungen verwendet, um auf die Ressourcen eines anderen Kunden zu reagieren, auf die er sonst nicht zugreifen dürfte. Um dies zu verhindern, bietet AWS Tools, mit denen Sie Ihre Daten für alle Services mit Serviceprinzipalen schützen können, die Zugriff auf Ressourcen in Ihrem Konto erhalten haben.

Um die Berechtigungen einzuschränken, die einem AWS IoT anderen Dienst für die Ressource gewähren, empfehlen wir die Verwendung der Kontextschlüssel aws:SourceArn und der aws:SourceAccount globalen Bedingungsschlüssel in den Ressourcenrichtlinien. Wenn Sie beide globalen Bedingungskontextschlüssel verwenden, müssen der aws:SourceAccount-Wert und das Konto im aws:SourceArn-Wert dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienanweisung verwendet werden.

Der effektivste Weg, um sich vor dem Verwirrter-Stellvertreter-Problem zu schützen, ist die Verwendung des aws:SourceArn globalen Bedingungskontextschlüssels mit dem vollständigen Amazon-Ressourcenname (ARN) der Ressource. Für AWS IoT, Sie aws:SourceArn müssen das Format einhalten: arn:aws:iot:region:account-id:resource-type/resource-id für ressourcenspezifische Berechtigungen oderarn:aws:iot:region:account-id:*. Die Ressourcen-ID kann der Name oder die ID der zulässigen Ressource oder eine Platzhalterangabe der erlaubten Ressourcen-IDs sein. Stellen Sie sicher, dass die region Ihrer AWS IoT Region und Ihrer account-id Kundenkonto-ID entspricht.

Das folgende Beispiel zeigt, wie das Problem des verwirrten Stellvertreters verhindert werden kann, indem die Schlüssel aws:SourceArn und der aws:SourceAccount globale Bedingungskontext in der AWS IoT Rollenvertrauensrichtlinie verwendet werden. Weitere Beispiele finden Sie unter Ausführliche Beispiele für verwirrte stellvertretende Prävention.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*" } } } ] }
Anmerkung

Wenn Sie Zugriffsverweigerungsfehler erhalten, kann das daran liegen, dass die Dienstintegration mit AWS Security Token Service (STS) die aws:SourceAccount Kontextschlüssel aws:SourceArn und nicht unterstützt.

Ausführliche Beispiele für verwirrte stellvertretende Prävention

Dieser Abschnitt enthält ausführliche Beispiele dafür, wie das Problem der verwirrten Stellvertreter mithilfe der Kontextschlüssel aws:SourceArn und der aws:SourceAccount globalen Bedingungskontextschlüssel in der AWS IoT Rollenvertrauensrichtlinie vermieden werden kann.

Flottenbereitstellung

Sie können die Flottenbereitstellung mithilfe einer Ressource für Bereitstellungsvorlagen konfigurieren. Wenn eine Bereitstellungsvorlage auf eine Bereitstellungsrolle verweist, kann die Vertrauensrichtlinie dieser Rolle die Bedingungsschlüssel und enthalten. aws:SourceArn aws:SourceAccount Diese Schlüssel begrenzen die Ressourcen, für die die Konfiguration die Anforderung aufrufen kann. sts:AssumeRole

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom IoT-Prinzipal (iot.amazonaws.com) für die in der angegebene Bereitstellungsvorlage übernommen werden. SourceArn

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template" } } } ] }

JITP

Bei der Just-in-Time-Bereitstellung (JITP) können Sie entweder die Bereitstellungsvorlage als von der CA getrennte Ressource verwenden oder den Vorlagentext und die Rolle als Teil der CA-Zertifikatkonfiguration definieren. Der Wert der Vertrauensrichtlinie aws:SourceArn in der AWS IoT Rolle hängt davon ab, wie Sie die Bereitstellungsvorlage definieren.

Wenn Sie Ihre Bereitstellungsvorlage als separate Ressource definieren, aws:SourceArn kann der Wert von wie folgt lauten. "arn:aws:iot:region:account-id:provisioningtemplate/example_template" Sie können dasselbe Richtlinienbeispiel in Flottenbereitstellung verwenden.

Wenn Sie Ihre Bereitstellungsvorlage in einer CA-Zertifikatsressource definieren, aws:SourceArn kann der Wert von oder sein"arn:aws:iot:region:account-id:cacert/cert_id". "arn:aws:iot:region:account-id:cacert/*" Sie können einen Platzhalter verwenden, wenn die Ressourcenkennung, z. B. die ID eines CA-Zertifikats, zum Zeitpunkt der Erstellung unbekannt ist.

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom IoT-Prinzipal (iot.amazonaws.com) für das in der SourceArn angegebene CA-Zertifikat übernommen werden.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"iot.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnLike":{ "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e" } } } ] }

Wenn Sie ein CA-Zertifikat erstellen, können Sie in der Registrierungskonfiguration auf eine Bereitstellungsrolle verweisen. Die Vertrauensrichtlinie der Bereitstellungsrolle kann verwendet werdenaws:SourceArn, um einzuschränken, für welche Ressourcen die Rolle übernommen werden kann. Beim ersten Aufruf von RegisterCACertificate zur Registrierung des CA-Zertifikats hätten Sie jedoch nicht den ARN des CA-Zertifikats zur Verfügung, den Sie in der Bedingung angeben könnten. aws:SourceArn

Um dies zu umgehen, d. h. um die Vertrauensrichtlinie für die Bereitstellungsrolle auf das spezifische CA-Zertifikat festzulegen, bei dem registriert ist AWS IoT Core, können Sie wie folgt vorgehen:

  • Rufen Sie zunächst RegisterCACertificate auf, ohne den Parameter anzugeben. RegistrationConfig

  • Nachdem das CA-Zertifikat registriert wurde, rufen Sie UpdateCACertificate AWS IoT Core dafür auf.

    Geben Sie im Aufruf von updateCACertificate eine Vertrauensrichtlinie an, RegistrationConfig die die Bereitstellungsrolle einschließt und auf den ARN des neu registrierten CA-Zertifikats gesetzt ist. aws:SourceArn

Anbieter von Anmeldeinformationen

Verwenden Sie für den AWS IoT Core Anmeldeinformationsanbieter dasselbe, mit dem AWS-Konto Sie den Rollenalias in erstellt habenaws:SourceAccount, und geben Sie eine Anweisung an, die dem Ressourcen-ARN des Rolealias-Ressourcentyps in entspricht. aws:SourceArn Wenn Sie eine IAM-Rolle für den AWS IoT Core Anmeldeinformationsanbieter erstellen, müssen Sie in die aws:SourceArn Bedingung die ARNs aller Rollenaliase einbeziehen, die möglicherweise die Rolle übernehmen müssen, wodurch die dienstübergreifende Anforderung autorisiert wird. sts:AssumeRole

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom Principal des AWS IoT Core Credential Providers (credentials.iot.amazonaws.com) für den in der angegebenen RoleAlias übernommen werden. SourceArn Wenn ein Principal versucht, Anmeldeinformationen für einen anderen als den in der aws:SourceArn Bedingung angegebenen Rollenalias abzurufen, wird die Anfrage abgelehnt, auch wenn dieser andere Rollenalias auf dieselbe IAM-Rolle verweist.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias" } } } ] }