如何使用Git处理Azure App Services上的机密文件

时间:2016-11-17 20:26:31

标签: php azure azure-web-app-service

我们有一个PHP应用程序,用于加密与数据库的连接,我们需要提供3个不应公开访问的文件,但应该存在于服务器上以建立数据库连接({{3} })

显然,我们不希望使用应用程序代码将它们存储在SCM中,因此我想到的唯一想法是使用部署后操作挂钩并从存储帐户中获取这些文件(使用密钥和URI)在app参数中提供。)

有更好/更清洁的方法来实现这一目标吗? :)

谢谢,

1 个答案:

答案 0 :(得分:0)

您可以尝试在部署任务期间使用Custom Deployment Script执行其他脚本或命令。因此,您可以创建一个php脚本,其功能是将证书文件从Blob存储下载到服务器文件系统位置。然后在您的PHP应用程序中,数据库连接可以使用这些文件。

以下是一般步骤:

  1. 在您的门户中启用composer扩展名: enter image description here
  2. 通过azure-cli安装npm模块,有关详细信息,请参阅https://docs.microsoft.com/en-us/azure/xplat-cli-install
  3. 通过命令azure site deplotmentscript --php
  4. 为php创建部署脚本
  5. 执行命令composer require microsoft/windowsazure,确保您拥有与存储sdk相关的composer.json
  6. 在根目录中创建php脚本以从Blob存储中下载苍蝇(例如名为run.php):

    require_once 'vendor/autoload.php';
    
    use WindowsAzure\Common\ServicesBuilder;
    use MicrosoftAzure\Storage\Common\ServiceException;
    $connectionString = "<connection_string>";
    $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
    
    $container = 'certificate';
    $blobs = ['client-key.pem','client-cert.pem','cleardb-ca.pem'];
    
    foreach($blobs as $k => $b){
        $blobresult = $blobRestProxy->getBlob($container, $b);
        $source = stream_get_contents($blobresult->getContentStream());
        $result = file_put_contents($b, $source);
    }
    
  7. 修改deploy.cmd脚本,在步骤php run.php下添加健全KuduSync
  8. 通过Git将您的应用程序部署到Azure Web App。
  9. 如有任何疑问,请随时告诉我。