View a markdown version of this page

Cross-service verwirrter Stellvertreter, Prävention - 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 verwirrter Stellvertreter, Prävention

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. Im AWS Fall eines dienststellenübergreifenden Identitätswechsels kann es zu einem Problem mit verwirrten Stellvertretern kommen. Cross-service Ein Identitätswechsel kann auftreten, wenn ein Dienst (der anrufende Dienst) einen anderen Dienst (den angerufenen Dienst) aufruft. 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 AWS IoT der Ressource einen anderen Dienst gewähren, empfehlen wir die Verwendung der Kontextschlüssel aws:SourceArnund der aws:SourceAccountglobalen Bedingungsschlüssel in 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 IoTaws:SourceArn müssen Sie 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 zulässigen Ressourcen-IDs sein. Stellen Sie sicher, dass das region mit Ihrer AWS IoT Region und das mit Ihrer account-id Kundenkonto-ID übereinstimmt.

Das folgende Beispiel zeigt, wie Sie das Problem mit dem verwirrten Stellvertreter verhindern können, indem Sie die Kontextschlüssel aws:SourceArn und die aws:SourceAccount globale Bedingung in der AWS IoT Rollenvertrauensrichtlinie verwenden. Weitere Beispiele finden Sie unter Ausführliche Beispiele für die Prävention verwirrter Stellvertreter.

{ "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 die Fehlermeldung „Zugriff verweigert“ erhalten, kann dies daran liegen, dass die Dienstintegration mit AWS Security Token Service (STS) die Kontextschlüssel aws:SourceArn und die aws:SourceAccount Kontextschlüssel nicht unterstützt.

Ausführliche Beispiele für die Prävention verwirrter Stellvertreter

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

Flottenbereitstellung

Sie können die Flottenbereitstellung mithilfe einer Provisioning-Vorlagenressource konfigurieren. Wenn eine Bereitstellungsvorlage auf eine Bereitstellungsrolle verweist, kann die Vertrauensrichtlinie dieser Rolle die Bedingungsschlüssel und die aws:SourceArn Bedingungsschlüssel enthalten. 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 SourceArn angegebene Bereitstellungsvorlage ü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: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-Zertifikatskonfiguration definieren. Der Wert von aws:SourceArn in der AWS IoT Rollenvertrauensrichtlinie hängt davon ab, wie Sie die Bereitstellungsvorlage definieren.

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

Wenn Sie Ihre Bereitstellungsvorlage innerhalb 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 angegebene CA-Zertifikat übernommen werdenSourceArn.

{ "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" } } } ] }

Beim Erstellen eines CA-Zertifikats 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 verwendet werden kann. Beim ersten RegisterCACertificate-Aufruf zur Registrierung des CA-Zertifikats müssten Sie jedoch nicht den ARN des CA-Zertifikats in der Bedingung angeben. aws:SourceArn

Um dieses Problem zu umgehen, d. h. um die Vertrauensrichtlinie der Bereitstellungsrolle für das spezifische CA-Zertifikat anzugeben, mit 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 bei registriert wurde AWS IoT Core, rufen Sie UpdateCACertificate auf.

    Geben Sie im updateCACertificate-Aufruf eine an, RegistrationConfig die die Vertrauensrichtlinie für die Bereitstellungsrolle enthält, die auf den ARN des neu registrierten CA-Zertifikats aws:SourceArn festgelegt ist.

Anbieter von Anmeldeinformationen

Verwenden Sie für AWS IoT Core Credential Provider dasselbe, das AWS-Konto Sie zum Erstellen des Rollenalias in verwendenaws: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 die Verwendung mit dem AWS IoT Core Anmeldeinformationsanbieter erstellen, müssen Sie die ARNs aller Rollenaliase, die möglicherweise die Rolle übernehmen müssen, in die aws:SourceArn Bedingung aufnehmen, um so die dienstübergreifende Anfrage zu autorisieren. sts:AssumeRole

Die Rolle mit der folgenden Vertrauensrichtlinie kann nur vom Principal von AWS IoT Core Credential Provider (credentials.iot.amazonaws.com) für den in der angegebenen roleAlias übernommen werden. SourceArn Wenn ein Principal versucht, Anmeldeinformationen für einen anderen Rollenalias als den in der aws:SourceArn Bedingung angegebenen 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" } } } ] }