DRM-X 6.0 Taube und Olivenzweig LogoDRM-X 6.0Dokumentation
◎ Deutsch

Amazon S3 und CloudFront: Schritt für Schritt

Verbinden Sie einen privaten S3-Bucket mit DRM-X 6.0 mit bereichsbezogenen IAM-Berechtigungen, Browser CORS, CloudFront HTTPS-Zustellung und einer Checkliste zur Upload-Verifizierung.

Markdown anzeigenLive-BeispieleAktualisiert 2026-09-28
Vom privaten Bucket zur öffentlichen Auslieferung verschlüsselter Medien Erstellen Sie einen S3-Bucket, geben Sie DRM-X eingeschränkte Upload-Zugangsdaten, konfigurieren Sie Browser-CORS und verbinden Sie CloudFront. Laden Sie ein Testobjekt hoch und rufen Sie es ab. Bewahren Sie Originalvideos und private Dateien außerhalb dieses Auslieferungs-Buckets auf.

1. Verstehen Sie den Zusammenhang#

DRM-X lädt Dateien mit signierten Anfragen direkt zu S3 hoch. Zuschauer laden die verschlüsselten Medien über CloudFront per HTTPS herunter. Lassen Sie Block all public access in S3 aktiviert. CloudFront erhält über Origin Access Control (OAC) eingeschränkten Lesezugriff.

CloudFront stellt eine produktionsgeeignete Domain https://….cloudfront.net bereit. Eine eigene Domain ist optional. Bei öffentlicher Auslieferung sind die Mediendaten abrufbar; DRM kontrolliert weiterhin die Entschlüsselung korrekt verpackter Medien. CORS ist keine Zugriffskontrolle. Diese Anleitung verwendet eine gewöhnliche öffentliche CDN-Auslieferung. Signierte URLs oder Cookies für Zuschauer erfordern eine separate Integration.

2. Erstellen Sie Ihren S3 Bucket#

AWS S3 Erstellungsformular: General purpose, Global namespace und ein Beispiel-Bucket-Name.
1: wählen Sie General purpose. 2: Geben Sie Ihren eigenen, eindeutigen Namen ein. Dies ist ein echtes Konsolenformular mit einem nicht übermittelten Beispiel. Kontoköpfe sind ausgeschlossen.
  1. Öffnen Sie Amazon S3 → General purpose buckets → Create bucket.
  2. Wählen Sie eine Region aus und notieren Sie ihren Code, z. B. us-east-1. Wählen Sie General purpose. Wenn Sie nach einem Namespace gefragt werden, verwenden Sie für diese exemplarische Vorgehensweise Global namespace.
  3. Geben Sie Ihren eigenen, weltweit eindeutigen Bucket-Namen ein. Halten Sie Object Ownership → ACLs disabled (Bucket owner enforced).
  4. Lassen Sie Block all public access aktiviert. Sie gewähren CloudFront Zugriff über eine bereichsbezogene Richtlinie.
  5. Behalten Sie für diese Anleitung Default encryption → Server-side encryption with Amazon S3 managed keys (SSE-S3) bei. Die Speicherverschlüsselung ergänzt das DRM-Packaging, ersetzt es aber nicht. SSE-KMS erfordert zusätzliche KMS-Berechtigungen für den Uploader und CloudFront.
  6. Überprüfen und erstellen Sie den Bucket. Aktivieren Sie S3 statisches Website-Hosting nicht.

3. Einen IAM-Benutzer mit eingeschränkten Rechten und einen Zugriffsschlüssel erstellen#

  1. Öffnen Sie IAM → Policies → Create policy → JSON. Fügen Sie die Richtlinie unten ein und ersetzen Sie dabei überall den Beispiel-Bucket-Namen.
  2. Das Beispiel erlaubt nur protected/. Wenn Sie einen anderen Basispfad verwenden, aktualisieren Sie sowohl die Präfixbedingung als auch das Objekt ARN. Entfernen Sie für die Bucket-Root-Verwendung die Präfixbedingung ListBucket und verwenden Sie arn:aws:s3:::YOUR_BUCKET/* für Objekte.
  3. Speichern Sie die Richtlinie. Öffnen Sie IAM → Users → Create user, erstellen Sie einen dedizierten Integrationsbenutzer ohne AWS Console Zugriff und hängen Sie nur diese Richtlinie an.
  4. Öffnen Sie Security credentials → Access keys → Create access key des Benutzers. Wählen Sie den Anwendungsfall für eine Anwendung, die außerhalb von AWS ausgeführt wird, und befolgen Sie die Anweisungen. Bewahren Sie die Access key ID und Secret access key für DRM-X sicher auf.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListProtectedFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::customer-drm-media-example",
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "protected",
            "protected/",
            "protected/*"
          ]
        }
      }
    },
    {
      "Sid": "BucketRegion",
      "Effect": "Allow",
      "Action": "s3:GetBucketLocation",
      "Resource": "arn:aws:s3:::customer-drm-media-example"
    },
    {
      "Sid": "ManageProtectedObjects",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::customer-drm-media-example/protected/*"
    }
  ]
}

Verwenden Sie keine Root-Schlüssel oder AdministratorAccess. Beim Kopieren werden GetObject und PutObject verwendet; Es gibt keine separate Aktion s3:CopyObject IAM. Für die Umbenennung ist ebenfalls DeleteObject erforderlich. Diese Anleitung folgt dem aktuellen Zugriffsschlüsselformular von DRM-X; Eine Rolle ARN allein ersetzt nicht das Schlüsselpaar.

4. Konfigurieren Sie S3 CORS für Browser-Uploads#

  1. Öffnen Sie Ihren S3-Bucket → Permissions.
  2. Scrollen Sie zu Cross-origin resource sharing (CORS) → Bearbeiten.
  3. Fügen Sie das folgende JSON ein. Verwenden Sie * für Lesezugriffe auf öffentliche verschlüsselte Medien und beschränken Sie Uploads auf DRM-X Console. Behalten Sie andere benötigte Regeln vorhandener Buckets bei.
  4. Wählen Sie Save changes. Lassen Sie Block Public Access aktiviert: CORS macht den Bucket nicht öffentlich.
[
  {
    "AllowedOrigins": [
      "https://6.drm-x.com"
    ],
    "AllowedMethods": [
      "PUT"
    ],
    "AllowedHeaders": [
      "Content-Type",
      "x-amz-meta-drmx-sha256"
    ],
    "ExposeHeaders": [
      "ETag"
    ],
    "MaxAgeSeconds": 3600
  },
  {
    "AllowedOrigins": [
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "HEAD"
    ],
    "AllowedHeaders": [
      "Range"
    ],
    "ExposeHeaders": [
      "ETag",
      "Content-Length",
      "Content-Range",
      "Accept-Ranges"
    ],
    "MaxAgeSeconds": 3600
  }
]

Konfigurieren Sie signierte Uploads in S3 und Wiedergabe-CORS sowohl in S3 als auch in CloudFront. Verwenden Sie in Schritt 5 dieselben Wiedergabe-Ursprünge in der CloudFront-Richtlinie für Antwortheader.

5. Mit CloudFront eine HTTPS-Auslieferungs-URL einrichten#

  1. Öffnen Sie CloudFront → Distributions → Create distribution. Verwenden Sie eine Standardverteilung. Wenn AWS eine Onboarding- oder Preisplanauswahl anzeigt, überprüfen Sie den für Ihr Konto geeigneten Plan und wählen Sie ihn aus, bevor Sie Ressourcen erstellen.
  2. Wählen Sie den normalen S3 REST origin des Buckets aus, nicht seinen Website-Endpunkt. Lassen Sie Origin path leer für die in diesem Handbuch verwendete Ordnerzuordnung.
  3. Wählen Sie Origin access control settings (recommended). Erstellen oder wählen Sie eine OAC mit Sign requests (recommended) aus.
  4. Stellen Sie die Viewer-Protokollrichtlinie auf Redirect HTTP to HTTPS oder HTTPS only ein. Erlaube GET, HEAD, OPTIONS. Uploads verwenden den Endpunkt S3, sodass CloudFront PUT nicht benötigt.
  5. Erstellen Sie die Verteilung. Wenden Sie die von CloudFront generierte Bucket-Richtlinie unter S3 → Bucket → Permissions → Bucket policy → Bearbeiten an. Mit erforderlichen vorhandenen Anweisungen zusammenführen. Beschränken Sie den Zugriff auf ARN dieser Distribution. Das folgende Beispiel beschränkt den Wert auf protected/.
  6. Öffnen Sie CloudFront → Policies → Response headers → Create response headers policy. Konfigurieren Sie die CORS-Felder in der folgenden Tabelle. Hängen Sie diese Richtlinie an das Medien-/Standardverhalten der Distribution an.
  7. Warten Sie, bis die Bereitstellung abgeschlossen ist. Kopieren Sie Distribution domain name. Ihr Lieferursprung ist https://YOUR_DISTRIBUTION.cloudfront.net.
Response headers RichtlinienfeldWert
Access-Control-Allow-Origin* (für öffentliche verschlüsselte Medien empfohlen). Wenn Sie im Generator bestimmte Ursprünge wählen, verwenden Sie hier dieselbe Liste.
Access-Control-Allow-MethodsGET, HEAD, OPTIONS
Access-Control-Allow-HeadersRange
Access-Control-Expose-HeadersETag, Content-Length, Content-Range, Accept-Ranges
Access-Control-Allow-CredentialsFür diesen öffentlichen Workflow für verschlüsselte Medien deaktiviert.
Access-Control-Max-Age3600
Origin overrideAktiviert, damit CloudFront den auf den Betrachter gerichteten CORS konsistent steuert.

Hängen Sie für OPTIONS Preflight die verwaltete Ursprungsanforderungsrichtlinie CORS-S3Origin an. Es leitet Origin, Access-Control-Request-Method und Access-Control-Request-Headers an S3 weiter. Zunächst nur GET/HEAD zwischenspeichern, das Caching von OPTIONS bleibt deaktiviert. Wenn Sie OPTIONS später zwischenspeichern, fügen Sie diese Header in seinen Cache-Schlüssel ein und testen Sie verschiedene Player-Ursprünge; Durch die alleinige Weiterleitung eines Headers wird dieser nicht zum Cache-Schlüssel hinzugefügt.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowThisCloudFrontDistribution",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::customer-drm-media-example/protected/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EEXAMPLE123"
        }
      }
    }
  ]
}

Ersetzen Sie das Beispielkonto ID, die Verteilung ID und den Bucket-Namen. Das SourceArn muss die Distribution identifizieren, die Sie gerade erstellt haben. Machen Sie nach Header-Änderungen betroffene Test-/Medienpfade ungültig, wenn frühere Antworten zwischengespeichert bleiben.

Optional: media.example.com verwenden

  1. Fordern Sie ein öffentliches ACM-Zertifikat an, das Ihren Hostnamen in US East (N. Virginia), us-east-1 abdeckt, und schließen Sie die DNS-Validierung ab.
  2. Fügen Sie den Hostnamen unter Alternate domain names der Distribution hinzu und hängen Sie das Zertifikat an.
  3. Erstellen Sie bei Ihrem DNS-Anbieter den CNAME- oder unterstützten Alias, der auf den CloudFront-Hostnamen verweist. Warten Sie auf DNS, die Bereitstellung des Zertifikats und der Verteilung.
  4. Verwenden Sie https://media.example.com als Lieferursprung. Ein DNS CNAME allein reicht ohne die CloudFront-Domänen- und Zertifikatseinrichtung nicht aus.

6. Verbinden Sie Amazon S3 mit DRM-X 6.0#

Öffnen Sie Cloud Storage → Connect storage. Wählen Sie Amazon S3.

FeldWas einzugeben ist
Display nameEin freundliches Label, z. B. Produktion S3.
Bucket nameDer genaue Name, ohne s3://.
RegionDer genaue AWS-Regionalcode des Buckets.
Protected-content base pathprotected, passend zu den IAM- und Bucket-Richtlinien.
Public URL prefixhttps://YOUR_DISTRIBUTION.cloudfront.net/protected oder https://media.example.com/protected.
Access key ID / Secret access keyDas Schlüsselpaar des dedizierten IAM-Benutzers.

Die Beispiele verwenden einen Ordner namens protected. Der Bucket-Name ist nicht automatisch ein Ordner. Mit der hier verwendeten direkten Domänen-zu-Bucket-Zuordnung fügen Sie denselben Speicherordner genau einmal in das öffentliche Präfix URL ein.

Bucket:                      customer-drm-media-example
Protected-content base path: protected
Public URL prefix:           https://media.example.com/protected
File selected for upload:    sample.encrypted.bin
Object key in the bucket:    protected/sample.encrypted.bin
Preview URL:                 https://media.example.com/protected/sample.encrypted.bin

Um den Bucket-Stamm zu verwenden, lassen Sie den Basispfad leer und geben Sie nur den Lieferursprung als öffentliches Präfix ein. Hängen Sie keinen Bucket-Namen an, es sei denn, Sie verwenden ihn absichtlich als Ordner. Lassen Sie CloudFront Origin path für diese Zuordnung leer.

Wählen Sie bei Bedarf das Standard-Upload-Ziel und dann Save and verify. Der Hostname S3 API ist nicht Ihre CloudFront Lieferung URL.

Die Richtlinie * erlaubt Browser-Lesezugriffe von jeder Website; die DRM-Lizenzautorisierung steuert weiterhin die Entschlüsselung. Verwenden Sie einen eigenen Bucket für verschlüsselte Medien und zur Veröffentlichung bestimmte Ressourcen. Medienanfragen dürfen keine ursprungsübergreifenden Cookies senden; die Auslieferung mit Cookie-Authentifizierung erfordert eine separate CORS-Konfiguration.

Generieren Sie Ihre CORS- und passenden URL-Felder

Dieses Tool läuft in Ihrem Browser. Geben Sie nur öffentliche Ursprünge ein. Es werden keine Zugangsschlüssel abgefragt.

Verwenden Sie * für die Wiedergabe von jeder Website (empfohlen). Für eine Einschränkung geben Sie HTTPS-Ursprünge ohne Seitenpfade ein, getrennt durch Leerzeichen oder Kommas. DRM-X Console und Playback Lab werden automatisch hinzugefügt.Geben Sie Ihre verbundene benutzerdefinierte Domain oder Ihren CloudFront-Origin ein. Lassen Sie den Ordner hier weg.

7. Laden Sie eine Datei hoch und überprüfen Sie, ob sie funktioniert#

  1. Öffnen Sie Cloud Storage, wählen Sie dieses Ziel und anschließend Verify location. Ein Erfolg bestätigt nur, dass der DRM-X-Server den Bucket auflisten kann. Schreibrechte, Browser-CORS und öffentliche Auslieferung werden damit nicht bestätigt.
  2. Wählen Sie Upload encrypted files und wählen Sie ein kleines verschlüsseltes Segment aus einem vorhandenen DRM-X-Paket. Wenn Sie kein Paket haben, verwenden Sie die unten stehende verschlüsselte Einwegdiagnose. Laden Sie kein Originalvideo oder persönliches Dokument hoch.
  3. Warten Sie auf die Erfolgsmeldung. Überprüfen Sie, ob der Dateiname und die Größe in Cloud Storage angezeigt werden. Finden Sie dasselbe Objekt unter protected/ in Ihrer Provider-Konsole.
  4. Öffnen Sie Preview URL in einem privaten Browserfenster. Prüfen Sie, ob das hochgeladene Objekt ohne Anmeldung HTTP 200 zurückgibt.
  5. Prüfen Sie die Manifest- und Medienantworten im Network-Bereich des Browsers. Bei der Standardrichtlinie muss Access-Control-Allow-Origin den Wert * haben, bei einer eingeschränkten Richtlinie den genauen Ursprung des Players. Das direkte Öffnen einer URL prüft CORS nicht.
  6. Entfernen Sie anschließend nur Ihr Einweg-Diagnoseobjekt. Folgen Sie dann der Desktop Packager-Anleitung, wählen Sie dieses Speicherziel in Package content aus und laden Sie das vollständige verschlüsselte Paket hoch. Beim manuellen Hochladen einer Datei wird kein Published Content ID registriert.
  7. Testen Sie die resultierende Published-Datei in Universal Playback Lab und Ihrer eigenen Player-Website. Überprüfen Sie Video, Audio, Suche und Ihre erforderlichen Geräte. Ein erfolgreicher Binär-Download ist kein Beweis für die DRM-Wiedergabe.
Kein verschlüsseltes Beispiel? Erstellen Sie am Windows eine Einweg-Testdatei

Führen Sie dies in Windows PowerShell in einem temporären Ordner aus, den Sie kontrollieren. Es verschlüsselt eine kurze, nicht persönliche Nachricht mit einem einmaligen AES-Schlüssel, der nur im Speicher gespeichert wird. Die Ausgabe ist eine Speicherdiagnose, kein abspielbares Medium; es enthält keinen DRM Inhaltsschlüssel oder Kundendaten.

$samplePath = Join-Path (Get-Location) 'drmx-storage-check.encrypted.bin'
if (Test-Path -LiteralPath $samplePath) { throw 'Choose a new folder; this test file already exists.' }
$aes = [System.Security.Cryptography.Aes]::Create()
try {
    $aes.GenerateKey()
    $aes.GenerateIV()
    $encryptor = $aes.CreateEncryptor()
    try {
        $bytes = [Text.Encoding]::UTF8.GetBytes('DRM-X disposable storage check')
        $encrypted = $encryptor.TransformFinalBlock($bytes, 0, $bytes.Length)
        [IO.File]::WriteAllBytes($samplePath, $encrypted)
    } finally { $encryptor.Dispose() }
} finally { $aes.Dispose() }
Get-Item -LiteralPath $samplePath | Select-Object Name, Length

Laden Sie drmx-storage-check.encrypted.bin hoch, überprüfen Sie seine Größe und Preview URL und entfernen Sie es dann aus dem Bucket.

curl.exe -I -H "Origin: https://www.example.com" "https://media.example.com/protected/sample.encrypted.bin"

Ersetzen Sie beide URLs. Erwarten Sie bei der Standardrichtlinie HTTP 200 und Access-Control-Allow-Origin: *. Eine GET-Anfrage mit Range: bytes=0-15 sollte HTTP 206 und Content-Range zurückgeben. Behalten Sie die MIME-Typen bei: application/dash+xml für DASH, application/vnd.apple.mpegurl für HLS und den passenden Typ für Mediendateien.

8. Beheben Sie Fehler bei Ihrem Ergebnis#

ResultAktion
Verify location ist erfolgreich, aber der Upload schlägt fehlÜberprüfen Sie den Browser Console und die Netzwerkfenster. Erlauben Sie PUT CORS vom genauen Console-Ursprung und Content-Type. Überprüfen Sie außerdem die Konnektivität und versuchen Sie es erneut, um ein neues vorsigniertes URL zu erhalten.
Upload gibt 403 zurückÜberprüfen Sie die Objektschreibberechtigung, den Bucket-/Ordnerbereich, den Endpunkt, die Region, den Anforderungsablauf und die Uhr. Geben Sie keine signierten Upload-URLs weiter.
Upload erfolgreich; public URL gibt 403 zurückÜberprüfen Sie, ob die öffentliche Bereitstellung aktiviert ist und die Bereitstellung der Domäne/Distribution abgeschlossen ist.
Öffentlich URL gibt 404 zurückVergleichen Sie den vollständigen URL mit dem genauen Objektschlüssel. Überprüfen Sie fehlende oder doppelte Ordner und die Groß-/Kleinschreibung von Dateinamen.
URL öffnet direkt; Der Abruf des Players schlägt fehlPrüfen Sie GET/HEAD-CORS auf dem Auslieferungshost. Verwenden Sie * für öffentliche verschlüsselte Medien oder erlauben Sie den genauen Ursprung des Players. Entfernen Sie veraltete CDN-Antworten aus dem Cache und versuchen Sie es erneut. Prüfen Sie bei S3 auch die CloudFront-Richtlinie für Antwortheader.
Funktioniert in DRM-X Playback Lab; Moodle oder WordPress meldet Failed to fetchPrüfen Sie GET/HEAD-CORS auf dem Auslieferungshost. Verwenden Sie * für öffentliche verschlüsselte Medien oder erlauben Sie den genauen Ursprung des Players. Entfernen Sie veraltete CDN-Antworten aus dem Cache und versuchen Sie es erneut. Prüfen Sie bei S3 auch die CloudFront-Richtlinie für Antwortheader.
Download erfolgreich; Die Wiedergabe schlägt fehlÜberprüfen Sie die Paketveröffentlichung, Manifestpfade, MIME-Typen und DRM-Lizenzautorisierung. Siehe Fehlerbehebung bei der Wiedergabe.

CloudFront 403: Bestätigen Sie, dass OAC Anforderungen signiert, die Bucket-Richtlinie die richtige Verteilung ARN und das richtige Präfix verwendet und der Ursprung der Endpunkt S3 REST ist. Behalten Sie S3 Block Public Access bei. Überprüfen Sie die KMS-Berechtigungen, wenn Sie SSE-KMS ausgewählt haben.

Offizielle Referenzen#

Für andere Anbieter nutzen Sie den Leitfaden zur Cloud-Speichereinrichtung.