dougong2005 2016-11-17 20:26
浏览 41
已采纳

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

We have an PHP app, where for encryption of the connection with database we need to provide 3 files that shouldn't be publicly accessible, but should be present on the server to make the DB connection (https://www.cleardb.com/developers/ssl_connections)

Obviously we don't want to store them in the SCM with the app code, so the only idea that comes to my mind is using post-deploy action hook and fetch those files from storage account (with keys and URIs provided in the app parameters).

Is there a nicer/cleaner way to achieve this? :)

Thank you,

  • 写回答

1条回答 默认 最新

  • dongwei4096 2016-11-18 03:31
    关注

    You can try to use Custom Deployment Script to execute additional scripts or command during the deployment task. So you can create a php script whose functionality is to download the certificate files from Blob Storage to server file system location. And then in your PHP application, the DB connection can use these files.

    Following are the general steps:

    1. Enable composer extension in your portal: enter image description here
    2. Install azure-cli module via npm, refer to https://docs.microsoft.com/en-us/azure/xplat-cli-install for more info.
    3. Create deployment script for php via command azure site deplotmentscript --php
    4. Execute command composer require microsoft/windowsazure, make sure you have a composer.json with the storage sdk dependency.
    5. Create php script in your root directory to download flies from Blob Storage(e.g. named 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. Modify the deploy.cmd script, add santence php run.php under the step KuduSync.
    7. Deploy your application to Azure Web App via Git.

    Any further concern, please feel free to let me know.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?