lua-resty-google-signature

GOOGLE 签名 V4 头部生成器

$ opm get aamarques/lua-resty-google-signature

lua-resty-google-signature

该库基于 Ludovic Vielle (lukkor) 在 https://github.com/jobteaser/lua-resty-aws 上的工作。它基本上是从他的仓库中分叉的,我将其从 AWS “翻译” 成了 GOOGLE 格式。这可以帮助人们更快地找到这种签名流程。

签名、算法等与签名 V4 (SigV4) 相同,GCS 可以直接使用它,但这里的目标是帮助人们使用 GCS 语法。

概述

该库使用 [Google 签名版本 4][goog4] 规范实现请求签名。这种签名方案用于 GCS 访问或 GCS 迁移。

GCS 文档

[goog4]: https://cloud.google.com/storage/docs/access-control/signed-urls

用法

该库使用 GCS 环境变量作为凭据来生成 [GCS 签名版本 4][goog4]。

    export GCS_ACCESS_KEY=GOOGEXAMPLE
    export GCS_SECRET_KEY=EXAMPLE_KEY

为了在你的 nginx 配置中访问这些变量,应该在 nginx.conf 文件中声明它们。

示例

    worker_processes 1;
    error_log stderr notice;
    daemon off;
    
    env GCS_ACCESS_KEY;
    env GCS_SECRET_KEY;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include /usr/local/openresty/nginx/conf/mime.types;
        variables_hash_max_size 1024;
        real_ip_header X-Real-IP;
        charset utf-8;
    
        access_log  /dev/stdout;
        sendfile        on;
        keepalive_timeout  65;
    
    
        lua_package_path "$prefix/resty_modules/lualib/?.lua;;";
        lua_package_cpath "$prefix/resty_modules/lualib/?.so;;";
    
        resolver 8.8.8.8;
    
        server {
           listen 8080;
           set $gcs_host YOUR-BUCKET_NAME.storage.googleapis.com;
    
           location / {
                default_type  application/octet-stream;
                access_by_lua_block {
                    require("resty.google-signature").gcs_set_headers(ngx.var.gcs_host, ngx.var.uri)
                }
                proxy_pass https://$gcs_host;
            }
         }
    
    }

如果你将这个模块安装到本地目录,你应该在 nginx.conf 文件中添加以下内容。 Openresty 本地安装

        lua_package_path "$prefix/resty_modules/lualib/?.lua;;";
        lua_package_cpath "$prefix/resty_modules/lualib/?.so;;";

resolver 8.8.8.8 用于防止 Docker 中的 DNS 解析问题。

注意: 不需要设置 <LOCATION> 或 `<SERVICE>。<LOCATION> 将自动设置为 auto 值,因为该参数是为了与 Amazon S3 保持兼容性。<SERVICE> 将自动设置为 storage,因为我们将访问 GCP 资源。

例如,一个典型的凭据范围看起来像这样

20211025/auto/storage/goog4_request

贡献

查看 CONTRIBUTING.md 获取更多信息。

许可证

版权所有 2021 Antonio Marques (aamarques)

根据 Apache 许可证 2.0 版(“许可证”)许可使用; 除符合许可证的规定外,你不得使用此文件。 你可以在以下地址获取许可证副本

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,根据许可证分发的软件按“原样”分发,不附带任何明示或暗示的担保。 请参阅许可证以了解管理许可证下的权限和限制的具体语言。

作者

Antonio Marques

许可证

apache2

依赖项

版本