gpt4 book ai didi

laravel-5 - 在弹性 beanstalk 部署之间维护 OAuth key

转载 作者:行者123 更新时间:2023-12-04 20:30:14 27 4
gpt4 key购买 nike

我有一个在 AWS Elastic Beanstalk 环境中运行的 laravel 应用程序。我使用 Laravel Passport 来处理身份验证。

每次我跑eb deploy key 将被删除,因为它不是版本控制文件的一部分(包含在 .gitignore 中)。因此,我必须手动运行 php artisan passport:keys在 EC2 实例中生成 key 。但这将使所有用户都需要再次登录,因为旧 token 现在无效,因为它是一个新的 key 对。

为我的配置提供一致的 oauth-public 和 oauth-private key 的最佳做法是什么?

我正在考虑将 key 包含在存储库中,但我认为不建议这样做。

另一种方法是我生成一次 key ,然后将其上传到 S3。然后有一个部署后脚本来检索 S3。

有没有更好的办法?

最佳答案

我昨天设法用 S3 解决了这个问题。

  • 创建一个私有(private) S3 存储库,用于存储敏感文件(oauth-private.key 等)
  • 在您的 .ebextensions 目录中,您必须创建一个 .config 文件,在其中定义 Resource (见 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-files - authentication 部分)- 看起来像这样:
  • Resources:
    AWSEBAutoScalingGroup:
    Metadata:
    AWS::CloudFormation::Authentication:
    S3Auth:
    type: "s3"
    buckets: ["<BUCKET-NAME>"]
    roleName:
    "Fn::GetOptionSetting":
    Namespace: "aws:autoscaling:launchconfiguration"
    OptionName: "IamInstanceProfile"
    DefaultValue: "aws-elasticbeanstalk-ec2-role"
  • 假设 A) 您的 S3 存储桶名为 <BUCKET-NAME> B) 您的 ElasticBeanstalk 环境中的 IAM 实例配置文件称为 aws-elasticbeanstalk-ec2-role
  • 现在您必须将文件添加到实例上的某个位置,您可以在其中访问它,您也可以自由选择在哪里。在您的 .config文件插入以下内容:
  • files:
    "/etc/keys/oauth-private.key":
    mode: "000755"
    owner: webapp
    group: webapp
    authentication: "S3Auth" # Notice, this is the same as specified in the Resources section
    source: "https://<BUCKET-NAME>.s3-<REGION>.amazonaws.com/<PATH-TO-THE-FILE-IN-THE-BUCKET>"
  • 现在要使其正常工作,您仍然需要授予对 IAM 实例配置文件 (aws-elasticbeanstalk-ec2-role) 的访问权限,因此您需要编辑存储桶的 ACL,如下所示:
  • {
    "Version": "2012-10-17",
    "Id": "BeanstalkS3Copy",
    "Statement": [
    {
    "Sid": "",
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<ID>:role/aws-elasticbeanstalk-ec2-role"
    },
    "Action": [
    "s3:ListBucketVersions",
    "s3:ListBucket",
    "s3:GetObjectVersion",
    "s3:GetObject"
    ],
    "Resource": [
    "arn:aws:s3:::<BUCKET-NAME>/*"
    ]
    }
    ]
    }
  • 您可以通过访问 找到 IAM 实例配置文件的 ARN。 IAM 仪表板 > 角色 > aws-elasticbeanstalk-ec2-role 和副本角色 ARN
  • 在您的 Laravel 应用程序中,您必须使用 Passport::loadKeysFrom('/etc/keys')
  • 关于laravel-5 - 在弹性 beanstalk 部署之间维护 OAuth key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48106704/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com