Toutes les requêtes API adressées à SLS nécessitent une authentification par signature, utilisant des paires AccessKey Alibaba Cloud et un mécanisme de 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é repose sur deux principes :
-
Identification de l'expéditeur.
L'expéditeur 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 les accès.
-
Détection d'une altération de la requête.
SLS recalcule la signature côté serveur et la compare à celle fournie par le client. En cas de divergence, le système considère que la requête a été falsifiée et la rejette.
La signature exige une paire AccessKey valide. Paire AccessKey. Utilisez une paire existante ou créez-en une nouvelle, puis assurez-vous qu'elle est enabled.
Les sections suivantes détaillent la structure des requêtes, le calcul de la signature ainsi que des exemples de code pour la mise en œuvre.
Structure des requêtes
Le tableau ci-dessous répertorie les champs d'en-tête HTTP obligatoires. Les valeurs respectent 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 suit le format LOG accessKeyId:Signature, où AccessKeyId correspond à votre ID de clé et Signature représente la chaîne de signature calculée. Cette section explique comment construire la valeur Signature.
Message de signature
Une chaîne de signature résulte du chiffrement et de l'encodage d'un message de signature. Le schéma suivant 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'est présent. |
49DFDD54B01CBCD2D2AB5E9E5EE6B9B9 |
|
Content-Type |
Type de corps de la requête HTTP. Chaîne vide si aucun corps n'est présent. |
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é dans l'ordre croissant, joints par |
offset=1&size=10 |
Exemple de message de signature. Chaque ligne, sauf 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 en utilisant votre AccessKey secret.
Encodez le résultat en Base64 pour obtenir la chaîne de signature.
Exemples
Les exemples suivants utilisent la paire AccessKey suivante :
AccessKeyId = "bq2sjzesjmo86kq****"
AccessKeySecret = "4fdO2fTDDnZPU/L7CHNd****"
-
Exemple 1
Listez tous les Logstores du projet ali-test-project via 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 pas de 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 rubrique Encodage des données. Content-Type vaut application/x-protobuf et Content-MD5 correspond au 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.>