Как работать с секретными файлами в службах приложений Azure с помощью Git

У нас есть приложение PHP, где для шифрования соединения с базой данных нам нужно предоставить 3 файла, которые не должны быть общедоступными, но должны присутствовать на сервере для установления соединения с БД (https://www.cleardb.com/developers/ssl_connections)

Очевидно, что мы не хотим хранить их в SCM с кодом приложения, поэтому единственная идея, которая приходит мне в голову, — использовать ловушку действия после развертывания и извлекать эти файлы из учетной записи хранения (с ключами и URI, указанными в параметрах приложения). ).

Есть ли лучший способ добиться этого? 🙂

Спасибо,

0

Решение

Вы можете попробовать использовать Пользовательский сценарий развертывания выполнить дополнительные сценарии или команду во время задачи развертывания. Таким образом, вы можете создать скрипт php, чья функциональность заключается в загрузке файлов сертификатов из хранилища BLOB-объектов в расположение файловой системы сервера. И затем в вашем приложении PHP соединение с БД может использовать эти файлы.

Ниже приведены общие шаги:

  1. включить composer расширение на вашем портале:
    введите описание изображения здесь
  2. устанавливать azure-cli модуль через npm, Ссылаться на https://docs.microsoft.com/en-us/azure/xplat-cli-install для получения дополнительной информации.
  3. Создать скрипт развертывания для php через команду azure site deplotmentscript --php
  4. Выполнить команду composer require microsoft/windowsazureубедитесь, что у вас есть composer.json с зависимостью sdk хранилища.
  5. Создайте скрипт php в корневой директории для загрузки файлов из хранилища BLOB-объектов (например, 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. Изменить deploy.cmd сценарий, добавить сантаче php run.php под ступенькой KuduSync,
  7. Разверните свое приложение в Azure Web App через Git.

Любое дальнейшее беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.

0

Другие решения

Других решений пока нет …