2016-11-17 22 views
0

我们有一个PHP应用程序,其中为了加密与数据库的连接,我们需要提供3个不应公开访问的文件,但应在服务器上存在使数据库连接(https://www.cleardb.com/developers/ssl_connections如何使用Git处理Azure App Services上的秘密文件

很明显,我们不想用应用程序代码将它们存储在SCM中,所以我想到的唯一想法是使用post-deploy动作挂接并从存储中获取这些文件帐户(在应用参数中提供密钥和URI)。

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

谢谢

回答

0

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

以下是一般步骤:

  1. 启用composer扩展在门户网站: enter image description here
  2. 通过npm安装azure-cli模块,参考https://docs.microsoft.com/en-us/azure/xplat-cli-install获取更多信息。
  3. 通过命令azure site deplotmentscript --php
  4. 执行命令composer require microsoft/windowsazure创建PHP部署脚本,请确保您有与存储SDK依赖一个composer.json
  5. 在根目录下创建的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); 
    } 
    
  6. 修改deploy.cmd脚本,步骤KuduSync下添加santence php run.php
  7. 通过Git将应用程序部署到Azure Web App。

任何进一步的关注,请随时让我知道。

相关问题