Toutes les requêtes API SLS nécessitent une authentification par signature à l'aide de paires AccessKey Alibaba Cloud et d'une signature HMAC-SHA1.
Notes d'utilisation
Le SDK SLS gère automatiquement la signature et prend en charge plusieurs langages. Privilégiez l'utilisation du SDK plutôt que la signature manuelle dans la mesure du possible. Présentation du SDK Simple Log Service.
Le processus de vérification de sécurité :
-
Identification du demandeur.
Le demandeur génère une signature numérique à l'aide d'une paire AccessKey. SLS utilise cette paire pour vérifier l'identité et contrôler l'accès.
-
Détection de la falsification des requêtes.
SLS recalcule la signature côté serveur et la compare à celle fournie par le client. Une divergence indique une falsification et la requête est rejetée.
La signature nécessite une paire AccessKey. Paire AccessKey. Utilisez une paire existante ou créez-en une, et assurez-vous qu'elle est enabled.
Les sections suivantes décrivent la structure de la requête, le calcul de la signature et des exemples de code de signature.
Structure de la requête
Le tableau suivant répertorie les champs d'en-tête HTTP requis. Les valeurs sont sensibles à la casse.
|
Field |
Description |
Example |
|
x-log-signaturemethod |
Méthode de chiffrement. |
hmac-sha1 |
|
x-log-apiversion |
Version de l'API. |
0.6.0 |
|
Date |
Horodatage HTTP standard au format RFC 822/1123 (GMT). Format : |
Mon, 3 Jan 2010 08:33:47 GMT |
|
Content-MD5 |
Hachage MD5 du corps de la requête, sous forme de chaîne hexadécimale en majuscules. |
72A15D7DE7EE9E7BB86461FFEA9499 |
|
Authorization |
Signature de la requête. Format : |
LOG testAccessKeyId:RLETq4u7sWb3cssZIhsun**** |
|
Content-Type |
Type de corps de la requête HTTP. Omettez ce champ si la requête ne contient aucun corps. |
application/json |
Exemple de requête HTTP signée :
POST /logstores/test-logstore/shards/0?action=split HTTP/1.1
Host: ali-test-project.cn-hangzhou.log.aliyuncs.com
Date: Tue, 23 Aug 2022 12:12:03 GMT
x-log-apiversion: 0.6.0
x-log-signaturemethod: hmac-sha1
Content-Length: 18
Content-Type: application/json
Content-MD5: 49DFDD54B01CBCD2D2AB5E9E5EE6B9B9
Authorization: LOG testAccessKeyId:RLETq4u7sWb3cssZIhsun****
{"hello": "world"}
Processus de calcul de la signature
L'en-tête Authorization utilise le format LOG accessKeyId:Signature, où AccessKeyId correspond à votre ID de clé et Signature à la chaîne de signature calculée. Cette section explique comment construire la valeur Signature.
Message de signature
Une chaîne de signature est produite par le chiffrement et l'encodage d'un message de signature. La figure suivante illustre le processus de construction.
|
Parameter |
Description |
Example |
|
method |
Méthode de requête HTTP en majuscules. Valeurs valides : GET, POST, PUT et DELETE. |
GET |
|
Content-MD5 |
Hachage MD5 du corps de la requête sous forme de chaîne hexadécimale en majuscules. Chaîne vide si aucun corps n'existe. |
49DFDD54B01CBCD2D2AB5E9E5EE6B9B9 |
|
Content-Type |
Type de corps de la requête HTTP. Chaîne vide si aucun corps n'existe. |
application/json |
|
Date |
Heure actuelle au format RFC 822/1123 (GMT). Format : |
Mon, 3 Jan 2010 08:33:47 GMT |
|
Header |
En-têtes préfixés par |
|
|
Uri |
Chemin de la requête, à l'exclusion du nom de domaine et des paramètres de requête. |
/logstores/test-logstore |
|
Query-related parameters |
Paramètres de requête triés par clé par ordre croissant, joints par |
offset=1&size=10 |
Exemple de message de signature. Chaque ligne, à l'exception de la dernière, se termine par un saut de ligne.
POST
1572A15D7DE7EE9E7BB86461FFEA9499
application/json
Tue, 23 Aug 2022 12:12:03 GMT
x-log-apiversion:0.6.0
x-log-bodyrawsize:0
x-log-signaturemethod:hmac-sha1
/logstores?offset=1&size=10
Chaîne de signature
Pour calculer la chaîne de signature :
Construisez le message de signature.
Chiffrez le message avec HMAC-SHA1 à l'aide de votre secret AccessKey.
Encodez le résultat en Base64 pour produire la chaîne de signature.
Exemples
Les exemples suivants utilisent cette paire AccessKey :
AccessKeyId = "bq2sjzesjmo86kq****"
AccessKeySecret = "4fdO2fTDDnZPU/L7CHNd****"
-
Exemple 1
Répertoriez tous les Logstores du projet ali-test-project à l'aide d'une requête GET. Requête HTTP à signer :
GET /logstores?logstoreName=&offset=0&size=1000 HTTP/1.1 Date: Mon, 09 Nov 2015 06:11:16 GMT Host: ali-test-project.cn-hangzhou.log.aliyuncs.com x-log-apiversion: 0.6.0 x-log-bodyrawsize:0 x-log-signaturemethod: hmac-sha1Message de signature généré :
GET Mon, 09 Nov 2015 06:11:16 GMT x-log-apiversion:0.6.0 x-log-bodyrawsize:0 x-log-signaturemethod:hmac-sha1 /logstores?logstoreName=&offset=0&size=1000Étant donné que les requêtes GET ne contiennent aucun corps, Content-MD5 et Content-Type sont des chaînes vides. Signature résultante :
jEYOTCJs2e88o+y5F4/S5I****Requête HTTP signée :
GET /logstores?logstoreName=&offset=0&size=1000 HTTP/1.1 Date: Mon, 09 Nov 2015 06:11:16 GMT Host: ali-test-project.cn-hangzhou.log.aliyuncs.com x-log-apiversion: 0.6.0 x-log-bodyrawsize:0 x-log-signaturemethod: hmac-sha1 Authorization: LOG bq2sjzesjmo86kq35behupbq:jEYOTCJs2e88o+y5F4/S5I**** -
Exemple 2
Écrivez le journal suivant dans le logstore test-logstore du projet ali-test-project :
topic="" time=1447048976 source="10.10.10.1" "TestKey": "TestContent"Requête HTTP à signer :
POST /logstores/test-logstore HTTP/1.1 Date: Mon, 09 Nov 2015 06:03:03 GMT Host: ali-test-project.cn-hangzhou.log.aliyuncs.com x-log-apiversion:0.6.0 x-log-bodyrawsize:50 x-log-signaturemethod:hmac-sha1 Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494 Content-Length: 52 <The log is serialized into byte streams in the Protobuf format.>Le journal est sérialisé au format Protocol Buffer (Protobuf) en tant que corps de la requête. Pour plus d'informations sur le format Protobuf, consultez la section Encodage des données. Content-Type est application/x-protobuf et Content-MD5 est le hachage MD5 du corps. Message de signature généré :
POST 1DD45FA4A70A9300CC9FE7305AF2C494 application/x-protobuf Mon, 09 Nov 2015 06:03:03 GMT x-log-apiversion:0.6.0 x-log-bodyrawsize:50 x-log-compresstype:lz4 x-log-signaturemethod:hmac-sha1 /logstores/ali-test-logstoreSignature résultante :
XWLGYHGg2F2hcfxWxMLiNk****Requête HTTP signée :
POST /logstores/ali-test-logstore HTTP/1.1 Date: Mon, 09 Nov 2015 06:03:03 GMT Host: ali-test-project.cn-hangzhou.log.aliyuncs.com x-log-apiversion:0.6.0 x-log-bodyrawsize:50 x-log-compresstype:lz4 x-log-signaturemethod:hmac-sha1 Content-MD5: 1DD45FA4A70A9300CC9FE7305AF2C494 Content-Length: 52 Authorization: LOG bq2sjzesjmo86kq35behupbq:XWLGYHGg2F2hcfxWxMLiNk**** <The log is serialized into byte streams in the Protobuf format.>