2016-10-05 2 views
0

Implémentation d'une application dans laquelle les images S3 peuvent uniquement être hotlinked par une liste de domaines figurant dans la liste blanche.Stratégie de référenceur HTTP dynamique AWS S3 avec N domaines

Pour un simple cas, je peux créer une politique Referer avec une liste statique des domaines tels que:

{ 
    "Version":"2012-10-17", 
    "Id":"http referer policy example", 
    "Statement":[ 
    { 
     "Sid":"Allow get requests originating from www.example.com and example.com.", 
     "Effect":"Allow", 
     "Principal":"*", 
     "Action":"s3:GetObject", 
     "Resource":"arn:aws:s3:::examplebucket/*", 
     "Condition":{ 
     "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} 
     } 
    } 
    ] 
} 

Je voudrais avoir cette liste soit générée dynamiquement à partir de la base de données par l'intermédiaire d'un langage de script, et puis publié sur l'AWS via l'API SDK.

Cela pourrait se faire en générant une chaîne JSON dynamique pour:

["http://www.example.com/*","http://example.com/*"] 

Est-ce le meilleur de le faire? Je ne pouvais pas trouver de documentation à ce sujet, mais j'imagine qu'il y a une limite pour la quantité de correspondances de chaînes dans la condition StringLike? Est-il préférable de créer une entrée StringLike individuelle dans Condition, une pour chaque domaine?

Je pourrais potentiellement avoir 10000 de domaines à la liste blanche, essayant ainsi de trouver la meilleure manière de mettre à l'échelle ceci.

+0

La stratégie de compartiment entier est [limitée à 20 Ko] (http://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html). Il s'agit donc probablement de la mauvaise solution. –

Répondre

0

Compte tenu de la limitation de longueur dans le cadre de politique de S3, cette solution n'a pas été utilisée.