{"id":11153,"date":"2018-04-27T10:39:17","date_gmt":"2018-04-27T08:39:17","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/"},"modified":"2023-07-17T16:44:33","modified_gmt":"2023-07-17T14:44:33","slug":"managing-sql-server-sa-credentials-with-docker-secrets-on-swarm","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/","title":{"rendered":"Managing SQL Server sa credentials with Docker secrets on Swarm"},"content":{"rendered":"<p>A couple of weeks ago, I was working on a MSSQL Server docker image in a context of <a href=\"https:\/\/hidora.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Hidora<\/a>, a swiss cloud provider based on <a href=\"https:\/\/en.wikipedia.org\/wiki\/Jelastic\" target=\"_blank\" rel=\"noopener noreferrer\">jelastic<\/a> and for Docker-based applications.<\/p>\n<p>When writing my jps manifest file I was agreeably surprised about the section concerning the MSSQL Server credentials information. We may able to define global variables for SQL Server sa password with <strong><em>${fn.password} <\/em><\/strong> as function as shown below:<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1\">globals:\n  sa_password: ${fn.password}\n  user_password: ${fn.password}\n\nnodes:\n  - nodeGroup: cp\n    count: 1\n    cloudlets: 30\n    displayName: mssqlserver-linux-2017-cu4 dbi services\n    env:\n      MSSQL_SA_PASSWORD: ${globals.sa_password}\n      MSSQL_PASSWORD: ${globals.user_password}\n      MSSQL_USER: ${globals.user_login} \n      TZ: Europe\/Berlin\n    image: dbi_linux_sql2017_cu4\n    registryUrl: node21755-env-6328816:5000<\/pre>\n<p>In fact, jelastic provides this interesting <a href=\"https:\/\/docs.cloudscripting.com\/0.99\/reference\/placeholders\/\" target=\"_blank\" rel=\"noopener noreferrer\">function<\/a> that generates a random password during the creation of the image container preventing to put the security information in clear text into the manifest. A very good idea!<\/p>\n<p>But let\u2019s going back to a traditional docker infrastructure. Usually as developers, we put sensible information in the docker-compose file deployment but that\u2019s not a big deal in this case (at least for almost cases). If we start containers based on our image in a Docker infrastructure, we still able to get the SQL Server sa password by running the docker inspect command.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$docker inspect 23107bf057ef | jq .[].Config.Env\n[\n  \"ACCEPT_EULA=Y\",\n  \"SA_PASSWORD=SuperSecretPassword1234\",\n  \"PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin\"\n]<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-22784 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-0-docker-swarm-secret-e1524826053198.jpg\" alt=\"blog 131 - 0 - docker swarm secret\" width=\"600\" height=\"266\" \/><\/p>\n<p>Definitely, one thing we want to avoid in Production. Sometimes ago, I wrote about <a href=\"https:\/\/www.dbi-services.com\/blog\/introducing-sql-server-on-docker-swarm-orchestrator\/\">Docker Swarm<\/a> feature that enables addressing production-oriented workload including scalability, high-availability and others. In production, the game may change a lot because\u00a0we have to manage sensible data as login credentials and fortunately we may\u00a0rely on a Docker Swarm feature called\u00a0<a href=\"https:\/\/docs.docker.com\/engine\/swarm\/secrets\/\">Docker secrets<\/a>.<\/p>\n<p>As stated to the Docker documentation, <strong><em>when we create and add a secret to a swarm, Docker sends the secret to the swarm manager over a mutual TLS connection. <\/em><\/strong><strong><em>The secret is stored in the Raft log, which is encrypted. The entire Raft log is replicated across the other managers, ensuring the same high availability guarantees for secrets as for the rest of the swarm management data.<\/em><\/strong><\/p>\n<p>This feature may address the security concern with MSSQL Server containers and sa credentials in production workloads. Indeed, as database administrator, we don\u2019t want to provide the sa password to the application users and we will go further by providing a SQL Server login with a set of scope-limited permissions and without providing any password in clear text in the docker deployment file.<\/p>\n<p>Thus, we managed to modify our initial MSSQL Docker image to support Docker secrets on Docker Swarm. In this blog, let&#8217;s focus on SQL Server sa password. Firstly we have to create a docker secret concerning the SQL Server sa password<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$echo \"Passw0rd1\" | docker secret create mssql_sa_password \u2013\n$ docker secret ls\nID                          NAME                  DRIVER              CREATED             UPDATED\nfpqykdgr4ytcher1j3sb5tgfv   mssql_sa_password                         35 minutes ago      35 minutes ago<\/pre>\n<p>The <em>mssql_sa_password<\/em> secret is then replicated to the other nodes by the Docker Swarm using TLS as explained above.<\/p>\n<p>The second step consisted in modifying the docker file as well as the docker-compose file for deployment. The\u00a0former contains two important sections where we had to put the additional code to extract the docker secret information as <strong>entrypoint.sh<\/strong> and <strong>healthcheck.sh<\/strong><\/p>\n<p>The Docker file (I put only the interesting sample here):<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1\"># Entry point # \nENTRYPOINT [\".\/entrypoint.sh\"]\n\n# Tail the setup logs to trap the process\nCMD [\"tail -f \/dev\/null\"]\n\n# Healthcheck routine for mssql instance\nHEALTHCHECK --interval=15s CMD [ \".\/healthcheck.sh\" ]<\/pre>\n<p><strong>entrypoint.sh<\/strong> bash script includes starting up the sqlservr process and <strong>healhcheck.sh<\/strong> a custom health check routine based on sqlcmd command line tool (meaning this approach requires mssql-tools package is already installed in your image).<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\/opt\/mssql-tools\/bin\/sqlcmd -S localhost,$MSSQL_TCP_PORT -U sa -P $SA_PASSWORD -Q \"select 1\" &amp;&amp; grep -q \"MSSQL CONFIG COMPLETED\" .\/config.log<\/pre>\n<p>The code to\u00a0leverage Docker secrets\u00a0was as follows:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">if [  ! -z ${MSSQL_SA_PASSWORD_FILE} ];\nthen \n    SA_PASSWORD=$(cat $MSSQL_SA_PASSWORD_FILE)\nelse\n    SA_PASSWORD=${MSSQL_SA_PASSWORD}\nfi<\/pre>\n<p>We added a new $MSSQL_SA_PASSWORD_FILE variable that takes priority over the $MSSQL_SA_PASSWORD if exists. The $MSSQL_SA_PASSWORD_FILE points to the path where the secret is available inside the Docker container by design: <strong>\/run\/secrets\/&lt;secret file&gt;.<\/strong> We tried to follow a standard rule that consists in adding the _FILE prefix to the existing SQL Server sa variable (MSSQL_SA_PASSWORD) for convenience.<\/p>\n<p>Finally, we modified the docker-compose file for deployment that contains all information to connect to the secret password so we may switch easily between using the traditional approach with the password in clear text in the deployment file and the securest way to manage sensible data on Docker Swarm.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-22779 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\" alt=\"blog 131 - docker secret deploy file_\" width=\"700\" height=\"151\" \/><\/p>\n<p>After applying the code update, using docker inspect command doesn\u2019t reveal the password anymore.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$docker inspect 62c42040174a | jq .[].Config.Env\n[\n  \"ACCEPT_EULA=Y\",\n  \"MSSQL_PID=Developer\",\n  \"MSSQL_SA_PASSWORD_FILE=\/run\/secrets\/mssql_sa_password\",\n\u2026\n]<\/pre>\n<p>As you probably know, <a href=\"https:\/\/blog.docker.com\/2018\/04\/announcing-docker-enterprise-edition-2-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker EE 2.0<\/a> is now able to manage container applications both on Docker Swarm and Kubernetes. I\u2019m looking forward to write about\u00a0for both environments\u00a0in the context of MSSQL Server databases and managing sensible data \ud83d\ude42<\/p>\n<p>See you!<\/p>\n<p><span style=\"float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;\">By David Barbarin<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A couple of weeks ago, I was working on a MSSQL Server docker image in a context of Hidora, a swiss cloud provider based on jelastic and for Docker-based applications. When writing my jps manifest file I was agreeably surprised about the section concerning the MSSQL Server credentials information. We may able to define global [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":11155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[762,601,73,1346,1275],"type_dbi":[],"class_list":["post-11153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-containers","tag-docker","tag-linux","tag-sqlserver","tag-swarm"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Managing SQL Server sa credentials with Docker secrets on Swarm - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Managing SQL Server sa credentials with Docker secrets on Swarm\" \/>\n<meta property=\"og:description\" content=\"A couple of weeks ago, I was working on a MSSQL Server docker image in a context of Hidora, a swiss cloud provider based on jelastic and for Docker-based applications. When writing my jps manifest file I was agreeably surprised about the section concerning the MSSQL Server credentials information. We may able to define global [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-27T08:39:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-17T14:44:33+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"151\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"Managing SQL Server sa credentials with Docker secrets on Swarm\",\"datePublished\":\"2018-04-27T08:39:17+00:00\",\"dateModified\":\"2023-07-17T14:44:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\"},\"wordCount\":709,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\",\"keywords\":[\"Containers\",\"Docker\",\"Linux\",\"SQLServer\",\"Swarm\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\",\"name\":\"Managing SQL Server sa credentials with Docker secrets on Swarm - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\",\"datePublished\":\"2018-04-27T08:39:17+00:00\",\"dateModified\":\"2023-07-17T14:44:33+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg\",\"width\":700,\"height\":151},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Managing SQL Server sa credentials with Docker secrets on Swarm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Managing SQL Server sa credentials with Docker secrets on Swarm - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/","og_locale":"en_US","og_type":"article","og_title":"Managing SQL Server sa credentials with Docker secrets on Swarm","og_description":"A couple of weeks ago, I was working on a MSSQL Server docker image in a context of Hidora, a swiss cloud provider based on jelastic and for Docker-based applications. When writing my jps manifest file I was agreeably surprised about the section concerning the MSSQL Server credentials information. We may able to define global [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/","og_site_name":"dbi Blog","article_published_time":"2018-04-27T08:39:17+00:00","article_modified_time":"2023-07-17T14:44:33+00:00","og_image":[{"width":700,"height":151,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"Managing SQL Server sa credentials with Docker secrets on Swarm","datePublished":"2018-04-27T08:39:17+00:00","dateModified":"2023-07-17T14:44:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/"},"wordCount":709,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg","keywords":["Containers","Docker","Linux","SQLServer","Swarm"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/","url":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/","name":"Managing SQL Server sa credentials with Docker secrets on Swarm - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg","datePublished":"2018-04-27T08:39:17+00:00","dateModified":"2023-07-17T14:44:33+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-131-docker-secret-deploy-file_-e1524822352258.jpg","width":700,"height":151},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/managing-sql-server-sa-credentials-with-docker-secrets-on-swarm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Managing SQL Server sa credentials with Docker secrets on Swarm"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11153"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11153\/revisions"}],"predecessor-version":[{"id":26774,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11153\/revisions\/26774"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11155"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11153"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}