[{"data":1,"prerenderedAt":1885},["ShallowReactive",2],{"/ja-jp/blog/gitlab-secrets-manager-add-eso-terraform-api-support":3,"navigation-ja-jp":1096,"banner-ja-jp":1526,"footer-ja-jp":1534,"blog-post-authors-ja-jp-Erick Bajao|Joe Randazzo":1776,"blog-related-posts-ja-jp-gitlab-secrets-manager-add-eso-terraform-api-support":1802,"blog-promotions-ja-jp":1824,"next-steps-ja-jp":1876},{"id":4,"title":5,"authors":6,"body":9,"category":1077,"date":1078,"description":1079,"extension":1080,"externalUrl":1081,"faq":1081,"featured":189,"heroImage":1082,"meta":1083,"navigation":189,"path":1084,"seo":1085,"slug":1088,"stem":1089,"tags":1090,"template":1093,"updatedDate":1094,"__hash__":1095},"blogPosts/ja-jp/blog/gitlab-secrets-manager-add-eso-terraform-api-support.md","GitLab Secrets ManagerがESO、Terraform、APIに対応",[7,8],"Erick Bajao","Joe Randazzo",{"type":10,"value":11,"toc":1070},"minimark",[12,16,26,50,55,58,65,73,84,92,95,101,110,114,124,435,443,447,450,575,579,586,1032,1035,1043,1052,1066],[13,14,15],"p",{},"CI/CDにはCI/CD用、KubernetesにはKubernetes用、Terraformにはまた別のシークレットストア。こうした分散した状態は、決して珍しくありません。ただ、増え続ける管理対象のツール、そしてアクセス制御の整合性を取り続ける負担。何か問題が起きたときには、ばらばらの監査証跡を突き合わせるところから始めることになります。",[13,17,18,19,25],{},"GitLab Secrets Managerが、External Secrets Operator（ESO）とTerraformに対応しました。",[20,21,24],"a",{"href":22,"rel":23},"https://docs.gitlab.com/ja-jp/ci/secrets/secrets_manager/non_cicd_access/",[],"CI/CDパイプラインの外側でも、安全にシークレットを取得できる","ようになります。OpenBaoを基盤とするGitLab Secrets Managerは、ソフトウェアデリバリーチェーン全体でシークレットの信頼できる唯一の情報源となる存在。1つのシークレットストアを、次のすべての用途で共有できます。",[27,28,29,33,36,39,42],"ul",{},[30,31,32],"li",{},"ESOを経由したKubernetesワークロード",[30,34,35],{},"TerraformまたはOpenTofuの実行",[30,37,38],{},"OpenBaoまたはVault CLI",[30,40,41],{},"GitLabのCI/CDジョブ（バージョン19.0以降）",[30,43,44,49],{},[20,45,48],{"href":46,"rel":47},"https://docs.gitlab.com/ja-jp/api/secrets_manager/",[],"Secrets Manager API","を利用した外部の自動化処理",[51,52,54],"h3",{"id":53},"kubernetesexternal-secrets-operator","Kubernetes：External Secrets Operator",[13,56,57],{},"ESOは、Vaultプロバイダーを介してGitLab Secrets Managerからシークレットを同期します。流れはシンプルです。クラスター内のワークロードが有効期間の短いJSON Web Token（JWT）を保持し、ESOがそれを使ってOpenBaoに認証。取得したシークレットは、Kubernetes Secretへ書き込まれます。",[13,59,60],{},[61,62],"img",{"alt":63,"src":64},"External Secrets Operator","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785953823/ojlr4rv1r34oflo4fynv.png",[13,66,67,72],{},[20,68,71],{"href":69,"rel":70},"https://external-secrets.io/latest/api/secretstore/",[],"SecretStore","は、「どこからシークレットを取得し、どう認証するか」をESOに伝えるためのリソースです。GitLab Secrets ManagerはVault互換のKV v2 APIを公開しているため、設定にはVaultプロバイダーを指定します。namespaceフィールドが対応するのはGitLabの階層（Organization、グループ、プロジェクト）で、このストアから参照できるシークレットの範囲を決めるもの。認証に使うのは、GitLabが発行しKubernetes Secretに格納したJWTです。secretRefから参照します。",[74,75,80],"pre",{"className":76,"code":78,"language":79},[77],"language-text","apiVersion: external-secrets.io/v1\nkind: SecretStore\nmetadata:\n  name: gitlab-secrets-manager\n  namespace: my-app\nspec:\n  provider:\n    vault:\n      server: https://secrets.gitlab.com      # provider.vault.server\n      path: secrets/kv                        # provider.vault.path\n      version: v2\n      namespace: org_5/group_42/project_99    # provider.vault.namespace\n      auth:\n        jwt:\n          path: api_jwt/cel                   # provider.vault.auth.jwt.path\n          role: all_api                       # provider.vault.auth.jwt.role\n          secretRef:\n            name: gitlab-access-token         # Kubernetes secret holding the minted token\n            key: token\n","text",[81,82,78],"code",{"__ignoreMap":83},"",[13,85,86,91],{},[20,87,90],{"href":88,"rel":89},"https://external-secrets.io/latest/api/externalsecret/",[],"ExternalSecret","で定義するのは、「どのシークレットを取得し、どこに配置するか」です。先ほど作成したSecretStoreを参照し、リモートのシークレットをKubernetes Secretへマッピングします。あとはワークロードから、マウントまたは環境変数として参照するだけ。",[13,93,94],{},"ターゲットとなるシークレット（synced-secret）を作成し、管理するのはESOです。refreshIntervalで指定した間隔ごとにGitLabから再取得するため、値をローテーションしても再デプロイは不要。data配下の各エントリは、リモートのシークレット1つをターゲット側のキー1つに対応付けます。remoteRef.keyがGitLab Secrets Manager上のパス、propertyがそのシークレット内のフィールド、secretKeyがKubernetes側での格納先キーです。",[74,96,99],{"className":97,"code":98,"language":79},[77],"apiVersion: external-secrets.io/v1\nkind: ExternalSecret\nmetadata:\n  name: my-secret\n  namespace: my-app\nspec:\n  refreshInterval: 45m\n  secretStoreRef:\n    name: gitlab-secrets-manager\n    kind: SecretStore\n  target:\n    name: synced-secret\n  data:\n    - secretKey: value\n      remoteRef:\n        key: explicit/\u003Csecret_name>           # \u003Csecrets_path>/\u003Csecret_name>\n        property: value\n",[81,100,98],{"__ignoreMap":83},[13,102,103,104,109],{},"GitLab Secrets ManagerとESOを実際に組み合わせる手順は、",[20,105,108],{"href":106,"rel":107},"https://gitlab.com/guided-explorations/secrets-management/gitlab-secrets-manager-with-eso-and-k3s",[],"チュートリアル","で紹介しています。",[51,111,113],{"id":112},"infrastructure-as-codeterraformとopentofu","Infrastructure as Code：TerraformとOpenTofu",[13,115,116,117,120,121,123],{},"Terraformのstateや",[81,118,119],{},".tfvars","ファイルは、認証情報の流出経路になりやすい場所です。シークレットがそのままディスクに書き出されたり、気づかないうちにバージョン管理へコミットされたりするためです。回避策となるのが、GitLabのシークレットをデータソースとして読み込む方法。planやapplyの実行時に発行したJWTで認証します。Terraformから直接参照する形にすれば、",[81,122,119],{},"ファイルにもCI/CD変数にも認証情報を残さずに済みます。",[74,125,129],{"className":126,"code":127,"language":128,"meta":83,"style":83},"language-shell shiki shiki-themes github-light","data \"external\" \"gitlab_secrets_token\" {\n  program = [\"bash\", \"${path.module}/scripts/mint_token.sh\"]\n\n  query = {\n    project_id = var.gitlab_project_id\n  }\n}\n\nprovider \"vault\" {\n  address   = data.external.gitlab_secrets_token.result.server\n  namespace = data.external.gitlab_secrets_token.result.namespace\n\n  auth_login_jwt {\n    mount = data.external.gitlab_secrets_token.result.auth_path\n    role  = data.external.gitlab_secrets_token.result.role\n    jwt   = data.external.gitlab_secrets_token.result.jwt\n  }\n}\n\ndata \"vault_kv_secret_v2\" \"my_secret\" {\n  mount = data.external.gitlab_secrets_token.result.mount\n  name  = \"${data.external.gitlab_secrets_token.result.secrets_path}/\u003Csecret_name>\"\n}\n\noutput \"secret_value\" {\n  value     = data.vault_kv_secret_v2.my_secret.data[\"value\"]\n  sensitive = true\n}\n","shell",[81,130,131,150,184,191,201,212,218,224,229,240,252,263,268,276,287,299,310,315,320,325,338,349,385,390,395,406,418,430],{"__ignoreMap":83},[132,133,136,140,144,147],"span",{"class":134,"line":135},"line",1,[132,137,139],{"class":138},"s7eDp","data",[132,141,143],{"class":142},"sYBdl"," \"external\"",[132,145,146],{"class":142}," \"gitlab_secrets_token\"",[132,148,149],{"class":142}," {\n",[132,151,153,156,159,163,166,169,172,175,178,181],{"class":134,"line":152},2,[132,154,155],{"class":138},"  program",[132,157,158],{"class":142}," =",[132,160,162],{"class":161},"sgsFI"," [",[132,164,165],{"class":142},"\"bash\"",[132,167,168],{"class":161},", ",[132,170,171],{"class":142},"\"${",[132,173,174],{"class":161},"path",[132,176,177],{"class":142},".",[132,179,180],{"class":161},"module",[132,182,183],{"class":142},"}/scripts/mint_token.sh\"]\n",[132,185,187],{"class":134,"line":186},3,[132,188,190],{"emptyLinePlaceholder":189},true,"\n",[132,192,194,197,199],{"class":134,"line":193},4,[132,195,196],{"class":138},"  query",[132,198,158],{"class":142},[132,200,149],{"class":142},[132,202,204,207,209],{"class":134,"line":203},5,[132,205,206],{"class":138},"    project_id",[132,208,158],{"class":142},[132,210,211],{"class":142}," var.gitlab_project_id\n",[132,213,215],{"class":134,"line":214},6,[132,216,217],{"class":161},"  }\n",[132,219,221],{"class":134,"line":220},7,[132,222,223],{"class":161},"}\n",[132,225,227],{"class":134,"line":226},8,[132,228,190],{"emptyLinePlaceholder":189},[132,230,232,235,238],{"class":134,"line":231},9,[132,233,234],{"class":138},"provider",[132,236,237],{"class":142}," \"vault\"",[132,239,149],{"class":142},[132,241,243,246,249],{"class":134,"line":242},10,[132,244,245],{"class":138},"  address",[132,247,248],{"class":142},"   =",[132,250,251],{"class":142}," data.external.gitlab_secrets_token.result.server\n",[132,253,255,258,260],{"class":134,"line":254},11,[132,256,257],{"class":138},"  namespace",[132,259,158],{"class":142},[132,261,262],{"class":142}," data.external.gitlab_secrets_token.result.namespace\n",[132,264,266],{"class":134,"line":265},12,[132,267,190],{"emptyLinePlaceholder":189},[132,269,271,274],{"class":134,"line":270},13,[132,272,273],{"class":138},"  auth_login_jwt",[132,275,149],{"class":142},[132,277,279,282,284],{"class":134,"line":278},14,[132,280,281],{"class":138},"    mount",[132,283,158],{"class":142},[132,285,286],{"class":142}," data.external.gitlab_secrets_token.result.auth_path\n",[132,288,290,293,296],{"class":134,"line":289},15,[132,291,292],{"class":138},"    role",[132,294,295],{"class":142},"  =",[132,297,298],{"class":142}," data.external.gitlab_secrets_token.result.role\n",[132,300,302,305,307],{"class":134,"line":301},16,[132,303,304],{"class":138},"    jwt",[132,306,248],{"class":142},[132,308,309],{"class":142}," data.external.gitlab_secrets_token.result.jwt\n",[132,311,313],{"class":134,"line":312},17,[132,314,217],{"class":161},[132,316,318],{"class":134,"line":317},18,[132,319,223],{"class":161},[132,321,323],{"class":134,"line":322},19,[132,324,190],{"emptyLinePlaceholder":189},[132,326,328,330,333,336],{"class":134,"line":327},20,[132,329,139],{"class":138},[132,331,332],{"class":142}," \"vault_kv_secret_v2\"",[132,334,335],{"class":142}," \"my_secret\"",[132,337,149],{"class":142},[132,339,341,344,346],{"class":134,"line":340},21,[132,342,343],{"class":138},"  mount",[132,345,158],{"class":142},[132,347,348],{"class":142}," data.external.gitlab_secrets_token.result.mount\n",[132,350,352,355,357,360,362,364,367,369,372,374,377,379,382],{"class":134,"line":351},22,[132,353,354],{"class":138},"  name",[132,356,295],{"class":142},[132,358,359],{"class":142}," \"${",[132,361,139],{"class":161},[132,363,177],{"class":142},[132,365,366],{"class":161},"external",[132,368,177],{"class":142},[132,370,371],{"class":161},"gitlab_secrets_token",[132,373,177],{"class":142},[132,375,376],{"class":161},"result",[132,378,177],{"class":142},[132,380,381],{"class":161},"secrets_path",[132,383,384],{"class":142},"}/\u003Csecret_name>\"\n",[132,386,388],{"class":134,"line":387},23,[132,389,223],{"class":161},[132,391,393],{"class":134,"line":392},24,[132,394,190],{"emptyLinePlaceholder":189},[132,396,398,401,404],{"class":134,"line":397},25,[132,399,400],{"class":138},"output",[132,402,403],{"class":142}," \"secret_value\"",[132,405,149],{"class":142},[132,407,409,412,415],{"class":134,"line":408},26,[132,410,411],{"class":138},"  value",[132,413,414],{"class":142},"     =",[132,416,417],{"class":142}," data.vault_kv_secret_v2.my_secret.data[\"value\"]\n",[132,419,421,424,426],{"class":134,"line":420},27,[132,422,423],{"class":138},"  sensitive",[132,425,158],{"class":142},[132,427,429],{"class":428},"sYu0t"," true\n",[132,431,433],{"class":134,"line":432},28,[132,434,223],{"class":161},[13,436,437,442],{},[20,438,441],{"href":439,"rel":440},"https://docs.gitlab.com/ja-jp/ci/secrets/secrets_manager/non_cicd_access/#use-with-terraform",[],"Terraformでシークレットを読み取る方法","は、ドキュメントで詳しく解説しています。",[51,444,446],{"id":445},"コマンドラインopenbaoまたはvault-cli","コマンドライン：OpenBaoまたはVault CLI",[13,448,449],{},"すべてのワークフローがAPIを直接呼び出すわけではありません。Vault互換のツールを前提にスクリプトを組んでいるチームなら、OpenBaoまたはVault CLIがそのまま使えます。手順はVaultから読み取るときと同じ。GitLab Secrets Managerのシークレットをそのまま取得できます。",[74,451,453],{"className":126,"code":452,"language":128,"meta":83,"style":83},"export VAULT_ADDR=\"\u003Cserver>\"\nexport VAULT_NAMESPACE=\"\u003Cnamespace>\"\n\n# Exchange the minted JWT for an OpenBao token, then export it.\nvault write \"auth/\u003Cauth_jwt_path>/login\" role=\u003Crole> jwt=\u003Ctoken>\nexport VAULT_TOKEN=\"\u003Cclient_token>\"\n\n# Read the secret value.\nvault kv get -mount=\u003Cpath> \"\u003Csecrets_path>/\u003Csecret_name>\"\n",[81,454,455,470,482,486,492,532,544,548,553],{"__ignoreMap":83},[132,456,457,461,464,467],{"class":134,"line":135},[132,458,460],{"class":459},"sD7c4","export",[132,462,463],{"class":161}," VAULT_ADDR",[132,465,466],{"class":459},"=",[132,468,469],{"class":142},"\"\u003Cserver>\"\n",[132,471,472,474,477,479],{"class":134,"line":152},[132,473,460],{"class":459},[132,475,476],{"class":161}," VAULT_NAMESPACE",[132,478,466],{"class":459},[132,480,481],{"class":142},"\"\u003Cnamespace>\"\n",[132,483,484],{"class":134,"line":186},[132,485,190],{"emptyLinePlaceholder":189},[132,487,488],{"class":134,"line":193},[132,489,491],{"class":490},"sAwPA","# Exchange the minted JWT for an OpenBao token, then export it.\n",[132,493,494,497,500,503,506,509,512,515,518,521,523,526,529],{"class":134,"line":203},[132,495,496],{"class":138},"vault",[132,498,499],{"class":142}," write",[132,501,502],{"class":142}," \"auth/\u003Cauth_jwt_path>/login\"",[132,504,505],{"class":142}," role=",[132,507,508],{"class":459},"\u003C",[132,510,511],{"class":142},"rol",[132,513,514],{"class":161},"e",[132,516,517],{"class":459},">",[132,519,520],{"class":142}," jwt=",[132,522,508],{"class":459},[132,524,525],{"class":142},"toke",[132,527,528],{"class":161},"n",[132,530,531],{"class":459},">\n",[132,533,534,536,539,541],{"class":134,"line":214},[132,535,460],{"class":459},[132,537,538],{"class":161}," VAULT_TOKEN",[132,540,466],{"class":459},[132,542,543],{"class":142},"\"\u003Cclient_token>\"\n",[132,545,546],{"class":134,"line":220},[132,547,190],{"emptyLinePlaceholder":189},[132,549,550],{"class":134,"line":226},[132,551,552],{"class":490},"# Read the secret value.\n",[132,554,555,557,560,563,566,568,570,572],{"class":134,"line":231},[132,556,496],{"class":138},[132,558,559],{"class":142}," kv",[132,561,562],{"class":142}," get",[132,564,565],{"class":428}," -mount=",[132,567,508],{"class":459},[132,569,174],{"class":428},[132,571,517],{"class":459},[132,573,574],{"class":142}," \"\u003Csecrets_path>/\u003Csecret_name>\"\n",[51,576,578],{"id":577},"secrets-manager-apiを使うケース","Secrets Manager APIを使うケース",[13,580,581,582,585],{},"GitLab CI/CD、Kubernetes、Terraformのどれにも当てはまらない自動化には、",[20,583,48],{"href":46,"rel":584},[],"という選択肢があります。認証情報をハードコーディングしたり、変数ファイルを別途用意したりしなくても、任意の外部システムからSecrets Managerのシークレットを取得できます。",[74,587,589],{"className":126,"code":588,"language":128,"meta":83,"style":83},"# Request JWT token using Service Account\nRESPONSE=$(curl --silent --request POST \\\n  --header \"PRIVATE-TOKEN: \u003Cyour_access_token>\" \\\n  --url \"https://gitlab.example.com/api/v4/projects/\u003Cproject_id>/secrets_manager/access_token\")\n\nSERVER=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.server)\nNAMESPACE=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.namespace)\nMOUNT=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.path)\nSECRETS_PATH=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.secrets_path)\nAUTH_PATH=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.auth.jwt.path)\nROLE=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.auth.jwt.role)\nJWT=$(echo \"$RESPONSE\" | jq --raw-output .provider.vault.auth.jwt.token)\n\n# Exchange the JWT for a short-lived OpenBao token.\nVAULT_TOKEN=$(curl --silent --request POST \\\n  --header \"X-Vault-Namespace: $NAMESPACE\" \\\n  --data \"{\\\"role\\\":\\\"$ROLE\\\",\\\"jwt\\\":\\\"$JWT\\\"}\" \\\n  \"$SERVER/v1/auth/$AUTH_PATH/login\" | jq --raw-output .auth.client_token)\n\n# Read the secret value.\ncurl --silent \\\n  --header \"X-Vault-Token: $VAULT_TOKEN\" \\\n  --header \"X-Vault-Namespace: $NAMESPACE\" \\\n  \"$SERVER/v1/$MOUNT/data/$SECRETS_PATH/\u003Csecret_name>\"\n",[81,590,591,596,621,631,642,646,681,709,737,765,793,821,849,853,858,877,891,941,969,973,977,985,999,1011],{"__ignoreMap":83},[132,592,593],{"class":134,"line":135},[132,594,595],{"class":490},"# Request JWT token using Service Account\n",[132,597,598,601,603,606,609,612,615,618],{"class":134,"line":152},[132,599,600],{"class":161},"RESPONSE",[132,602,466],{"class":459},[132,604,605],{"class":161},"$(",[132,607,608],{"class":138},"curl",[132,610,611],{"class":428}," --silent",[132,613,614],{"class":428}," --request",[132,616,617],{"class":142}," POST",[132,619,620],{"class":428}," \\\n",[132,622,623,626,629],{"class":134,"line":186},[132,624,625],{"class":428},"  --header",[132,627,628],{"class":142}," \"PRIVATE-TOKEN: \u003Cyour_access_token>\"",[132,630,620],{"class":428},[132,632,633,636,639],{"class":134,"line":193},[132,634,635],{"class":428},"  --url",[132,637,638],{"class":142}," \"https://gitlab.example.com/api/v4/projects/\u003Cproject_id>/secrets_manager/access_token\"",[132,640,641],{"class":161},")\n",[132,643,644],{"class":134,"line":203},[132,645,190],{"emptyLinePlaceholder":189},[132,647,648,651,653,655,658,661,664,667,670,673,676,679],{"class":134,"line":214},[132,649,650],{"class":161},"SERVER",[132,652,466],{"class":459},[132,654,605],{"class":161},[132,656,657],{"class":428},"echo",[132,659,660],{"class":142}," \"",[132,662,663],{"class":161},"$RESPONSE",[132,665,666],{"class":142},"\"",[132,668,669],{"class":459}," |",[132,671,672],{"class":138}," jq",[132,674,675],{"class":428}," --raw-output",[132,677,678],{"class":142}," .provider.vault.server",[132,680,641],{"class":161},[132,682,683,686,688,690,692,694,696,698,700,702,704,707],{"class":134,"line":220},[132,684,685],{"class":161},"NAMESPACE",[132,687,466],{"class":459},[132,689,605],{"class":161},[132,691,657],{"class":428},[132,693,660],{"class":142},[132,695,663],{"class":161},[132,697,666],{"class":142},[132,699,669],{"class":459},[132,701,672],{"class":138},[132,703,675],{"class":428},[132,705,706],{"class":142}," .provider.vault.namespace",[132,708,641],{"class":161},[132,710,711,714,716,718,720,722,724,726,728,730,732,735],{"class":134,"line":226},[132,712,713],{"class":161},"MOUNT",[132,715,466],{"class":459},[132,717,605],{"class":161},[132,719,657],{"class":428},[132,721,660],{"class":142},[132,723,663],{"class":161},[132,725,666],{"class":142},[132,727,669],{"class":459},[132,729,672],{"class":138},[132,731,675],{"class":428},[132,733,734],{"class":142}," .provider.vault.path",[132,736,641],{"class":161},[132,738,739,742,744,746,748,750,752,754,756,758,760,763],{"class":134,"line":231},[132,740,741],{"class":161},"SECRETS_PATH",[132,743,466],{"class":459},[132,745,605],{"class":161},[132,747,657],{"class":428},[132,749,660],{"class":142},[132,751,663],{"class":161},[132,753,666],{"class":142},[132,755,669],{"class":459},[132,757,672],{"class":138},[132,759,675],{"class":428},[132,761,762],{"class":142}," .provider.vault.secrets_path",[132,764,641],{"class":161},[132,766,767,770,772,774,776,778,780,782,784,786,788,791],{"class":134,"line":242},[132,768,769],{"class":161},"AUTH_PATH",[132,771,466],{"class":459},[132,773,605],{"class":161},[132,775,657],{"class":428},[132,777,660],{"class":142},[132,779,663],{"class":161},[132,781,666],{"class":142},[132,783,669],{"class":459},[132,785,672],{"class":138},[132,787,675],{"class":428},[132,789,790],{"class":142}," .provider.vault.auth.jwt.path",[132,792,641],{"class":161},[132,794,795,798,800,802,804,806,808,810,812,814,816,819],{"class":134,"line":254},[132,796,797],{"class":161},"ROLE",[132,799,466],{"class":459},[132,801,605],{"class":161},[132,803,657],{"class":428},[132,805,660],{"class":142},[132,807,663],{"class":161},[132,809,666],{"class":142},[132,811,669],{"class":459},[132,813,672],{"class":138},[132,815,675],{"class":428},[132,817,818],{"class":142}," .provider.vault.auth.jwt.role",[132,820,641],{"class":161},[132,822,823,826,828,830,832,834,836,838,840,842,844,847],{"class":134,"line":265},[132,824,825],{"class":161},"JWT",[132,827,466],{"class":459},[132,829,605],{"class":161},[132,831,657],{"class":428},[132,833,660],{"class":142},[132,835,663],{"class":161},[132,837,666],{"class":142},[132,839,669],{"class":459},[132,841,672],{"class":138},[132,843,675],{"class":428},[132,845,846],{"class":142}," .provider.vault.auth.jwt.token",[132,848,641],{"class":161},[132,850,851],{"class":134,"line":270},[132,852,190],{"emptyLinePlaceholder":189},[132,854,855],{"class":134,"line":278},[132,856,857],{"class":490},"# Exchange the JWT for a short-lived OpenBao token.\n",[132,859,860,863,865,867,869,871,873,875],{"class":134,"line":289},[132,861,862],{"class":161},"VAULT_TOKEN",[132,864,466],{"class":459},[132,866,605],{"class":161},[132,868,608],{"class":138},[132,870,611],{"class":428},[132,872,614],{"class":428},[132,874,617],{"class":142},[132,876,620],{"class":428},[132,878,879,881,884,887,889],{"class":134,"line":301},[132,880,625],{"class":428},[132,882,883],{"class":142}," \"X-Vault-Namespace: ",[132,885,886],{"class":161},"$NAMESPACE",[132,888,666],{"class":142},[132,890,620],{"class":428},[132,892,893,896,899,902,905,907,910,912,915,917,920,922,925,927,929,931,934,936,939],{"class":134,"line":312},[132,894,895],{"class":428},"  --data",[132,897,898],{"class":142}," \"{",[132,900,901],{"class":428},"\\\"",[132,903,904],{"class":142},"role",[132,906,901],{"class":428},[132,908,909],{"class":142},":",[132,911,901],{"class":428},[132,913,914],{"class":161},"$ROLE",[132,916,901],{"class":428},[132,918,919],{"class":142},",",[132,921,901],{"class":428},[132,923,924],{"class":142},"jwt",[132,926,901],{"class":428},[132,928,909],{"class":142},[132,930,901],{"class":428},[132,932,933],{"class":161},"$JWT",[132,935,901],{"class":428},[132,937,938],{"class":142},"}\"",[132,940,620],{"class":428},[132,942,943,946,949,952,955,958,960,962,964,967],{"class":134,"line":317},[132,944,945],{"class":142},"  \"",[132,947,948],{"class":161},"$SERVER",[132,950,951],{"class":142},"/v1/auth/",[132,953,954],{"class":161},"$AUTH_PATH",[132,956,957],{"class":142},"/login\"",[132,959,669],{"class":459},[132,961,672],{"class":138},[132,963,675],{"class":428},[132,965,966],{"class":142}," .auth.client_token",[132,968,641],{"class":161},[132,970,971],{"class":134,"line":322},[132,972,190],{"emptyLinePlaceholder":189},[132,974,975],{"class":134,"line":327},[132,976,552],{"class":490},[132,978,979,981,983],{"class":134,"line":340},[132,980,608],{"class":138},[132,982,611],{"class":428},[132,984,620],{"class":428},[132,986,987,989,992,995,997],{"class":134,"line":351},[132,988,625],{"class":428},[132,990,991],{"class":142}," \"X-Vault-Token: ",[132,993,994],{"class":161},"$VAULT_TOKEN",[132,996,666],{"class":142},[132,998,620],{"class":428},[132,1000,1001,1003,1005,1007,1009],{"class":134,"line":387},[132,1002,625],{"class":428},[132,1004,883],{"class":142},[132,1006,886],{"class":161},[132,1008,666],{"class":142},[132,1010,620],{"class":428},[132,1012,1013,1015,1017,1020,1023,1026,1029],{"class":134,"line":392},[132,1014,945],{"class":142},[132,1016,948],{"class":161},[132,1018,1019],{"class":142},"/v1/",[132,1021,1022],{"class":161},"$MOUNT",[132,1024,1025],{"class":142},"/data/",[132,1027,1028],{"class":161},"$SECRETS_PATH",[132,1030,1031],{"class":142},"/\u003Csecret_name>\"\n",[51,1033,1034],{"id":1034},"始めるには",[13,1036,1037,1042],{},[20,1038,1041],{"href":1039,"rel":1040},"https://about.gitlab.com/ja-jp/blog/secrets-manager-in-public-beta/",[],"GitLab Secrets Managerは、PremiumおよびUltimateのお客様向けにパブリックベータとして提供中","です。ESO、Terraform、APIによるシークレットへのアクセスに対応しているのは、現時点でGitLab.comとGitLab Self-Managed。GitLab Dedicatedへの対応も近日中を予定しています。",[13,1044,1045,1046,1051],{},"ベータ期間中は無料でご利用いただけます。一般提供の開始後は、",[20,1047,1050],{"href":1048,"rel":1049},"https://docs.gitlab.com/ja-jp/subscriptions/gitlab_credits/",[],"GitLabクレジット","による課金対象の有料機能となる予定。課金が始まる前にはオプトインが必要で、事前にご案内します。",[13,1053,1054,1055,1059,1060,1065],{},"まずは",[20,1056,1058],{"href":22,"rel":1057},[],"ドキュメント","をご覧ください。足りない点やご要望があれば、",[20,1061,1064],{"href":1062,"rel":1063},"https://gitlab.com/gitlab-org/gitlab/-/work_items/598100",[],"こちらのイシュー","へお寄せください。一般提供に向けて、フィードバックを集めています。",[1067,1068,1069],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":83,"searchDepth":152,"depth":152,"links":1071},[1072,1073,1074,1075,1076],{"id":53,"depth":186,"text":54},{"id":112,"depth":186,"text":113},{"id":445,"depth":186,"text":446},{"id":577,"depth":186,"text":578},{"id":1034,"depth":186,"text":1034},"security","2026-08-06","スタック全体の認証情報管理をシンプルに。GitLab Secrets Managerは External Secrets Operator（ESO）、Terraform、Secrets Manager APIに対応し、CI/CD以外の ワークフローからもシークレットを安全に取得できます。","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png",{},"/ja-jp/blog/gitlab-secrets-manager-add-eso-terraform-api-support",{"config":1086,"title":5,"description":1079},{"noIndex":1087},false,"gitlab-secrets-manager-add-eso-terraform-api-support","ja-jp/blog/gitlab-secrets-manager-add-eso-terraform-api-support",[1077,1091,1092],"features","product","BlogPost","2026-08-07","KNsLXHzeIpgsAu8BZipUK1_WPDErx0A29u54BOqx1TQ",{"logo":1097,"freeTrial":1102,"sales":1107,"login":1112,"items":1117,"search":1446,"minimal":1479,"duo":1496,"switchNav":1505,"pricingDeployment":1516},{"config":1098},{"href":1099,"dataGaName":1100,"dataGaLocation":1101},"/ja-jp/","gitlab logo","header",{"text":1103,"config":1104},"無料トライアルを開始",{"href":1105,"dataGaName":1106,"dataGaLocation":1101},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp&glm_content=default-saas-trial/","free trial",{"text":1108,"config":1109},"デモをリクエスト",{"href":1110,"dataGaName":1111,"dataGaLocation":1101},"/ja-jp/sales/?contact-topic=request-demo","sales",{"text":1113,"config":1114},"サインイン",{"href":1115,"dataGaName":1116,"dataGaLocation":1101},"https://gitlab.com/users/sign_in/","sign in",[1118,1147,1249,1254,1368,1424],{"text":1119,"config":1120,"menu":1122},"プラットフォーム",{"dataNavLevelOne":1121},"platform",{"type":1123,"columns":1124},"cards",[1125,1131,1139],{"title":1119,"description":1126,"link":1127},"DevSecOpsに特化したインテリジェントオーケストレーションプラットフォーム",{"text":1128,"config":1129},"プラットフォームの詳細はこちら",{"href":1130,"dataGaName":1121,"dataGaLocation":1101},"/ja-jp/platform/",{"title":1132,"description":1133,"link":1134},"GitLab Duo Agent Platform","ソフトウェアライフサイクル全体を支えるエージェント型AI",{"text":1135,"config":1136},"GitLab Duoのご紹介",{"href":1137,"dataGaName":1138,"dataGaLocation":1101},"/ja-jp/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1140,"description":1141,"link":1142},"GitLabが選ばれる理由","エンタープライズがGitLabを選ぶ主な理由をご覧ください",{"text":1143,"config":1144},"詳細はこちら",{"href":1145,"dataGaName":1146,"dataGaLocation":1101},"/ja-jp/why-gitlab/","why gitlab",{"text":1148,"left":189,"config":1149,"menu":1151},"製品",{"dataNavLevelOne":1150},"solutions",{"type":1152,"link":1153,"columns":1157,"feature":1228},"lists",{"text":1154,"config":1155},"すべてのソリューションを表示",{"href":1156,"dataGaName":1150,"dataGaLocation":1101},"/ja-jp/solutions/",[1158,1183,1206],{"title":1159,"description":1160,"link":1161,"items":1166},"自動化","CI/CDと自動化でデプロイを加速",{"config":1162},{"icon":1163,"href":1164,"dataGaName":1165,"dataGaLocation":1101},"AutomatedCodeAlt","/ja-jp/solutions/delivery-automation/","automated software delivery",[1167,1171,1174,1179],{"text":1168,"config":1169},"CI/CD",{"href":1170,"dataGaLocation":1101,"dataGaName":1168},"/ja-jp/solutions/continuous-integration/",{"text":1132,"config":1172},{"href":1137,"dataGaLocation":1101,"dataGaName":1173},"gitlab duo agent platform - product menu",{"text":1175,"config":1176},"ソースコード管理",{"href":1177,"dataGaLocation":1101,"dataGaName":1178},"/ja-jp/solutions/source-code-management/","Source Code Management",{"text":1180,"config":1181},"自動化されたソフトウェアデリバリー",{"href":1164,"dataGaLocation":1101,"dataGaName":1182},"Automated software delivery",{"title":1184,"description":1185,"link":1186,"items":1191},"セキュリティ","セキュリティを犠牲にすることなくコード作成を高速化",{"config":1187},{"href":1188,"dataGaName":1189,"dataGaLocation":1101,"icon":1190},"/ja-jp/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1192,1196,1201],{"text":1193,"config":1194},"アプリケーションセキュリティテスト",{"href":1188,"dataGaName":1195,"dataGaLocation":1101},"Application security testing",{"text":1197,"config":1198},"ソフトウェアサプライチェーンセキュリティ",{"href":1199,"dataGaLocation":1101,"dataGaName":1200},"/ja-jp/solutions/supply-chain/","Software supply chain security",{"text":1202,"config":1203},"ソフトウェアコンプライアンス",{"href":1204,"dataGaName":1205,"dataGaLocation":1101},"/ja-jp/solutions/software-compliance/","software compliance",{"title":1207,"link":1208,"items":1213},"測定",{"config":1209},{"icon":1210,"href":1211,"dataGaName":1212,"dataGaLocation":1101},"DigitalTransformation","/ja-jp/solutions/visibility-measurement/","visibility and measurement",[1214,1218,1223],{"text":1215,"config":1216},"可視性と測定",{"href":1211,"dataGaLocation":1101,"dataGaName":1217},"Visibility and Measurement",{"text":1219,"config":1220},"バリューストリーム管理",{"href":1221,"dataGaLocation":1101,"dataGaName":1222},"/ja-jp/solutions/value-stream-management/","Value Stream Management",{"text":1224,"config":1225},"分析とインサイト",{"href":1226,"dataGaLocation":1101,"dataGaName":1227},"/ja-jp/solutions/analytics-and-insights/","Analytics and insights",{"title":1229,"type":1152,"items":1230},"GitLabが活躍する場所",[1231,1237,1243],{"text":1232,"config":1233},"大企業",{"icon":1234,"href":1235,"dataGaLocation":1101,"dataGaName":1236},"Building","/ja-jp/enterprise/","enterprise",{"text":1238,"config":1239},"スモールビジネス",{"icon":1240,"href":1241,"dataGaLocation":1101,"dataGaName":1242},"Work","/ja-jp/small-business/","small business",{"text":1244,"config":1245},"公共部門",{"icon":1246,"href":1247,"dataGaLocation":1101,"dataGaName":1248},"Organization","/ja-jp/solutions/public-sector/","public sector",{"text":1250,"config":1251},"価格",{"href":1252,"dataGaName":1253,"dataGaLocation":1101,"dataNavLevelOne":1253},"/ja-jp/pricing/","pricing",{"text":1255,"config":1256,"menu":1258},"関連リソース",{"dataNavLevelOne":1257},"resources",{"type":1152,"link":1259,"columns":1263,"feature":1357},{"text":1260,"config":1261},"すべてのリソースを表示",{"href":1262,"dataGaName":1257,"dataGaLocation":1101},"/ja-jp/resources/",[1264,1297,1324],{"title":1265,"items":1266},"はじめに",[1267,1272,1277,1282,1287,1292],{"text":1268,"config":1269},"インストール",{"href":1270,"dataGaName":1271,"dataGaLocation":1101},"/ja-jp/install/","install",{"text":1273,"config":1274},"クイックスタートガイド",{"href":1275,"dataGaName":1276,"dataGaLocation":1101},"/ja-jp/get-started/","quick setup checklists",{"text":1278,"config":1279},"学ぶ",{"href":1280,"dataGaLocation":1101,"dataGaName":1281},"https://university.gitlab.com/","learn",{"text":1283,"config":1284},"製品ドキュメント",{"href":1285,"dataGaName":1286,"dataGaLocation":1101},"https://docs.gitlab.com/ja-jp/","product documentation",{"text":1288,"config":1289},"ベストプラクティスビデオ",{"href":1290,"dataGaName":1291,"dataGaLocation":1101},"/ja-jp/getting-started-videos/","best practice videos",{"text":1293,"config":1294},"インテグレーション",{"href":1295,"dataGaName":1296,"dataGaLocation":1101},"/ja-jp/integrations/","integrations",{"title":1298,"items":1299},"検索する",[1300,1305,1310,1315,1319],{"text":1301,"config":1302},"お客様成功事例",{"href":1303,"dataGaName":1304,"dataGaLocation":1101},"/ja-jp/customers/","customer success stories",{"text":1306,"config":1307},"ブログ",{"href":1308,"dataGaName":1309,"dataGaLocation":1101},"/ja-jp/blog/","blog",{"text":1311,"config":1312},"Demo Hub",{"href":1313,"dataGaName":1314,"dataGaLocation":1101},"/ja-jp/demo-hub/","demo hub",{"text":1316,"config":1317},"The Source",{"href":1318,"dataGaName":1309,"dataGaLocation":1101},"/ja-jp/the-source/",{"text":1320,"config":1321},"リモート",{"href":1322,"dataGaName":1323,"dataGaLocation":1101},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1325,"items":1326},"つなげる",[1327,1332,1337,1342,1347,1352],{"text":1328,"config":1329},"GitLabサービス",{"href":1330,"dataGaName":1331,"dataGaLocation":1101},"/ja-jp/services/","services",{"text":1333,"config":1334},"コントリビュート",{"href":1335,"dataGaName":1336,"dataGaLocation":1101},"https://contributors.gitlab.com","contribute",{"text":1338,"config":1339},"コミュニティ",{"href":1340,"dataGaName":1341,"dataGaLocation":1101},"/community/","community",{"text":1343,"config":1344},"フォーラム",{"href":1345,"dataGaName":1346,"dataGaLocation":1101},"https://forum.gitlab.com/","forum",{"text":1348,"config":1349},"イベント",{"href":1350,"dataGaName":1351,"dataGaLocation":1101},"/events/","events",{"text":1353,"config":1354},"パートナー",{"href":1355,"dataGaName":1356,"dataGaLocation":1101},"/ja-jp/partners/","partners",{"config":1358,"title":1361,"text":1362,"link":1363},{"background":1359,"textColor":1360},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","GitLabの最新情報","最新の機能と改善点に関する情報をお届けします。",{"text":1364,"config":1365},"最新情報を読む",{"href":1366,"dataGaName":1367,"dataGaLocation":1101},"/ja-jp/whats-new/","whats new",{"text":1369,"config":1370,"menu":1372},"企業情報",{"dataNavLevelOne":1371},"company",{"type":1152,"columns":1373},[1374],{"items":1375},[1376,1381,1387,1389,1394,1399,1404,1409,1414,1419],{"text":1377,"config":1378},"GitLabについて",{"href":1379,"dataGaName":1380,"dataGaLocation":1101},"/ja-jp/company/","about",{"text":1382,"config":1383,"footerGa":1386},"採用情報",{"href":1384,"dataGaName":1385,"dataGaLocation":1101},"/jobs/","jobs",{"dataGaName":1385},{"text":1348,"config":1388},{"href":1350,"dataGaName":1351,"dataGaLocation":1101},{"text":1390,"config":1391},"経営陣",{"href":1392,"dataGaName":1393,"dataGaLocation":1101},"/company/team/e-group/","leadership",{"text":1395,"config":1396},"ハンドブック",{"href":1397,"dataGaName":1398,"dataGaLocation":1101},"https://handbook.gitlab.com/","handbook",{"text":1400,"config":1401},"投資家向け情報",{"href":1402,"dataGaName":1403,"dataGaLocation":1101},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1405,"config":1406},"トラストセンター",{"href":1407,"dataGaName":1408,"dataGaLocation":1101},"/ja-jp/security/","trust center",{"text":1410,"config":1411},"AI Transparency Center",{"href":1412,"dataGaName":1413,"dataGaLocation":1101},"/ja-jp/ai-transparency-center/","ai transparency center",{"text":1415,"config":1416},"ニュースレター",{"href":1417,"dataGaName":1418,"dataGaLocation":1101},"/company/contact/#contact-forms","newsletter",{"text":1420,"config":1421},"プレス",{"href":1422,"dataGaName":1423,"dataGaLocation":1101},"/press/","press",{"text":1425,"config":1426,"menu":1427},"お問い合わせ",{"dataNavLevelOne":1371},{"type":1152,"columns":1428},[1429],{"items":1430},[1431,1436,1441],{"text":1432,"config":1433},"お問い合わせはこちら",{"href":1434,"dataGaName":1435,"dataGaLocation":1101},"/ja-jp/sales/","talk to sales",{"text":1437,"config":1438},"サポートを受ける",{"href":1439,"dataGaName":1440,"dataGaLocation":1101},"https://support.gitlab.com/hc/en-us","support portal",{"text":1442,"config":1443},"カスタマーポータル",{"href":1444,"dataGaName":1445,"dataGaLocation":1101},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1447,"login":1448,"suggestions":1455},"閉じる",{"text":1449,"link":1450},"リポジトリとプロジェクトを検索するには、次にログインします",{"text":1451,"config":1452},"GitLab.com",{"href":1115,"dataGaName":1453,"dataGaLocation":1454},"search login","search",{"text":1456,"default":1457},"提案",[1458,1460,1465,1467,1471,1475],{"text":1132,"config":1459},{"href":1137,"dataGaName":1132,"dataGaLocation":1454},{"text":1461,"config":1462},"コード提案（AI）",{"href":1463,"dataGaName":1464,"dataGaLocation":1454},"/ja-jp/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1168,"config":1466},{"href":1170,"dataGaName":1168,"dataGaLocation":1454},{"text":1468,"config":1469},"GitLab on AWS",{"href":1470,"dataGaName":1468,"dataGaLocation":1454},"/ja-jp/partners/technology-partners/aws/",{"text":1472,"config":1473},"GitLab on Google Cloud",{"href":1474,"dataGaName":1472,"dataGaLocation":1454},"/ja-jp/partners/technology-partners/google-cloud-platform/",{"text":1476,"config":1477},"GitLabを選ぶ理由",{"href":1145,"dataGaName":1478,"dataGaLocation":1454},"Why GitLab?",{"freeTrial":1480,"mobileIcon":1484,"desktopIcon":1489,"secondaryButton":1492},{"text":1103,"config":1481},{"href":1482,"dataGaName":1106,"dataGaLocation":1483},"https://gitlab.com/-/trials/new/","nav",{"altText":1485,"config":1486},"GitLabアイコン",{"src":1487,"dataGaName":1488,"dataGaLocation":1483},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1485,"config":1490},{"src":1491,"dataGaName":1488,"dataGaLocation":1483},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1265,"config":1493},{"href":1494,"dataGaName":1495,"dataGaLocation":1483},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/ja-jp/get-started/","get started",{"freeTrial":1497,"mobileIcon":1501,"desktopIcon":1503},{"text":1498,"config":1499},"GitLab Duoの詳細について",{"href":1137,"dataGaName":1500,"dataGaLocation":1483},"gitlab duo",{"altText":1485,"config":1502},{"src":1487,"dataGaName":1488,"dataGaLocation":1483},{"altText":1485,"config":1504},{"src":1491,"dataGaName":1488,"dataGaLocation":1483},{"button":1506,"mobileIcon":1511,"desktopIcon":1513},{"text":1507,"config":1508},"/switch",{"href":1509,"dataGaName":1510,"dataGaLocation":1483},"#contact","switch",{"altText":1485,"config":1512},{"src":1487,"dataGaName":1488,"dataGaLocation":1483},{"altText":1485,"config":1514},{"src":1515,"dataGaName":1488,"dataGaLocation":1483},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1517,"mobileIcon":1522,"desktopIcon":1524},{"text":1518,"config":1519},"料金ページに戻る",{"href":1252,"dataGaName":1520,"dataGaLocation":1483,"icon":1521},"back to pricing","GoBack",{"altText":1485,"config":1523},{"src":1487,"dataGaName":1488,"dataGaLocation":1483},{"altText":1485,"config":1525},{"src":1491,"dataGaName":1488,"dataGaLocation":1483},{"title":1527,"button":1528,"config":1532},"GitLab Orbitが登場: AIエージェントのためのコンテキストレイヤー",{"text":1143,"config":1529},{"href":1530,"dataGaName":1531,"dataGaLocation":1101},"/ja-jp/gitlab-orbit/","orbit",{"layout":1533,"disabled":1087},"release",{"data":1535},{"text":1536,"source":1537,"edit":1543,"contribute":1548,"config":1553,"items":1558,"minimal":1767},"GitはSoftware Freedom Conservancyの商標です。当社は「GitLab」をライセンスに基づいて使用しています",{"text":1538,"config":1539},"ページのソースを表示",{"href":1540,"dataGaName":1541,"dataGaLocation":1542},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1544,"config":1545},"このページを編集",{"href":1546,"dataGaName":1547,"dataGaLocation":1542},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1549,"config":1550},"ご協力をお願いします",{"href":1551,"dataGaName":1552,"dataGaLocation":1542},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1554,"facebook":1555,"youtube":1556,"linkedin":1557},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1559,1604,1657,1700,1734],{"title":1250,"links":1560,"subMenu":1575},[1561,1565,1570],{"text":1562,"config":1563},"プランの表示",{"href":1252,"dataGaName":1564,"dataGaLocation":1542},"view plans",{"text":1566,"config":1567},"Premiumを選ぶ理由",{"href":1568,"dataGaName":1569,"dataGaLocation":1542},"/ja-jp/pricing/premium/","why premium",{"text":1571,"config":1572},"Ultimateを選ぶ理由",{"href":1573,"dataGaName":1574,"dataGaLocation":1542},"/ja-jp/pricing/ultimate/","why ultimate",[1576],{"title":1425,"links":1577},[1578,1580,1582,1584,1589,1594,1599],{"text":1425,"config":1579},{"href":1434,"dataGaName":1111,"dataGaLocation":1542},{"text":1437,"config":1581},{"href":1439,"dataGaName":1440,"dataGaLocation":1542},{"text":1442,"config":1583},{"href":1444,"dataGaName":1445,"dataGaLocation":1542},{"text":1585,"config":1586},"ステータス",{"href":1587,"dataGaName":1588,"dataGaLocation":1542},"https://status.gitlab.com/","status",{"text":1590,"config":1591},"利用規約",{"href":1592,"dataGaName":1593,"dataGaLocation":1542},"/terms/","terms of use",{"text":1595,"config":1596},"プライバシーに関する声明",{"href":1597,"dataGaName":1598,"dataGaLocation":1542},"/ja-jp/privacy/","privacy statement",{"text":1600,"config":1601},"Cookie 優先設定",{"dataGaName":1602,"dataGaLocation":1542,"id":1603,"isOneTrustButton":189},"cookie preferences","ot-sdk-btn",{"title":1148,"links":1605,"subMenu":1614},[1606,1610],{"text":1607,"config":1608},"DevSecOpsプラットフォーム",{"href":1130,"dataGaName":1609,"dataGaLocation":1542},"devsecops platform",{"text":1611,"config":1612},"AI支援開発",{"href":1137,"dataGaName":1613,"dataGaLocation":1542},"ai-assisted development",[1615],{"title":1616,"links":1617},"トピック",[1618,1622,1627,1632,1637,1642,1647,1652],{"text":1168,"config":1619},{"href":1620,"dataGaName":1621,"dataGaLocation":1542},"/ja-jp/topics/ci-cd/","cicd",{"text":1623,"config":1624},"GitOps",{"href":1625,"dataGaName":1626,"dataGaLocation":1542},"/ja-jp/topics/gitops/","gitops",{"text":1628,"config":1629},"DevOps",{"href":1630,"dataGaName":1631,"dataGaLocation":1542},"/ja-jp/topics/devops/","devops",{"text":1633,"config":1634},"バージョン管理",{"href":1635,"dataGaName":1636,"dataGaLocation":1542},"/ja-jp/topics/version-control/","version control",{"text":1638,"config":1639},"DevSecOps",{"href":1640,"dataGaName":1641,"dataGaLocation":1542},"/ja-jp/topics/devsecops/","devsecops",{"text":1643,"config":1644},"クラウドネイティブ",{"href":1645,"dataGaName":1646,"dataGaLocation":1542},"/ja-jp/topics/cloud-native/","cloud native",{"text":1648,"config":1649},"コーディングのためのAI",{"href":1650,"dataGaName":1651,"dataGaLocation":1542},"/ja-jp/topics/devops/ai-for-coding/","ai for coding",{"text":1653,"config":1654},"エージェント型AI",{"href":1655,"dataGaName":1656,"dataGaLocation":1542},"/ja-jp/topics/agentic-ai/","agentic ai",{"title":1658,"links":1659},"ソリューション",[1660,1663,1665,1670,1674,1677,1680,1683,1685,1687,1690,1695],{"text":1193,"config":1661},{"href":1188,"dataGaName":1662,"dataGaLocation":1542},"Application Security Testing",{"text":1180,"config":1664},{"href":1164,"dataGaName":1165,"dataGaLocation":1542},{"text":1666,"config":1667},"アジャイル開発",{"href":1668,"dataGaName":1669,"dataGaLocation":1542},"/ja-jp/solutions/agile-delivery/","agile delivery",{"text":1671,"config":1672},"SCM",{"href":1177,"dataGaName":1673,"dataGaLocation":1542},"source code management",{"text":1168,"config":1675},{"href":1170,"dataGaName":1676,"dataGaLocation":1542},"continuous integration & delivery",{"text":1219,"config":1678},{"href":1221,"dataGaName":1679,"dataGaLocation":1542},"value stream management",{"text":1623,"config":1681},{"href":1682,"dataGaName":1626,"dataGaLocation":1542},"/ja-jp/solutions/gitops/",{"text":1232,"config":1684},{"href":1235,"dataGaName":1236,"dataGaLocation":1542},{"text":1238,"config":1686},{"href":1241,"dataGaName":1242,"dataGaLocation":1542},{"text":1688,"config":1689},"公共機関",{"href":1247,"dataGaName":1248,"dataGaLocation":1542},{"text":1691,"config":1692},"教育",{"href":1693,"dataGaName":1694,"dataGaLocation":1542},"/ja-jp/solutions/education/","education",{"text":1696,"config":1697},"金融サービス",{"href":1698,"dataGaName":1699,"dataGaLocation":1542},"/ja-jp/solutions/finance/","financial services",{"title":1701,"links":1702},"リソース",[1703,1705,1707,1709,1713,1715,1718,1720,1722,1724,1726,1728,1730,1732],{"text":1268,"config":1704},{"href":1270,"dataGaName":1271,"dataGaLocation":1542},{"text":1273,"config":1706},{"href":1275,"dataGaName":1276,"dataGaLocation":1542},{"text":1278,"config":1708},{"href":1280,"dataGaName":1281,"dataGaLocation":1542},{"text":1283,"config":1710},{"href":1711,"dataGaName":1712,"dataGaLocation":1542},"https://docs.gitlab.com/ja-jp","docs",{"text":1306,"config":1714},{"href":1308,"dataGaName":1309,"dataGaLocation":1542},{"text":1716,"config":1717},"最新リリース",{"href":1366,"dataGaName":1367,"dataGaLocation":1542},{"text":1301,"config":1719},{"href":1303,"dataGaName":1304,"dataGaLocation":1542},{"text":1320,"config":1721},{"href":1322,"dataGaName":1323,"dataGaLocation":1542},{"text":1328,"config":1723},{"href":1330,"dataGaName":1331,"dataGaLocation":1542},{"text":1333,"config":1725},{"href":1335,"dataGaName":1336,"dataGaLocation":1542},{"text":1338,"config":1727},{"href":1340,"dataGaName":1341,"dataGaLocation":1542},{"text":1343,"config":1729},{"href":1345,"dataGaName":1346,"dataGaLocation":1542},{"text":1348,"config":1731},{"href":1350,"dataGaName":1351,"dataGaLocation":1542},{"text":1353,"config":1733},{"href":1355,"dataGaName":1356,"dataGaLocation":1542},{"title":1735,"links":1736},"会社情報",[1737,1739,1741,1743,1745,1747,1751,1756,1758,1760,1762],{"text":1377,"config":1738},{"href":1379,"dataGaName":1371,"dataGaLocation":1542},{"text":1382,"config":1740},{"href":1384,"dataGaName":1385,"dataGaLocation":1542},{"text":1390,"config":1742},{"href":1392,"dataGaName":1393,"dataGaLocation":1542},{"text":1395,"config":1744},{"href":1397,"dataGaName":1398,"dataGaLocation":1542},{"text":1400,"config":1746},{"href":1402,"dataGaName":1403,"dataGaLocation":1542},{"text":1748,"config":1749},"Sustainability",{"href":1750,"dataGaName":1748,"dataGaLocation":1542},"/sustainability/",{"text":1752,"config":1753},"ダイバーシティ、インクルージョン、ビロンギング（DIB）",{"href":1754,"dataGaName":1755,"dataGaLocation":1542},"/ja-jp/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1405,"config":1757},{"href":1407,"dataGaName":1408,"dataGaLocation":1542},{"text":1415,"config":1759},{"href":1417,"dataGaName":1418,"dataGaLocation":1542},{"text":1420,"config":1761},{"href":1422,"dataGaName":1423,"dataGaLocation":1542},{"text":1763,"config":1764},"現代奴隷制の透明性に関する声明",{"href":1765,"dataGaName":1766,"dataGaLocation":1542},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1768},[1769,1771,1774],{"text":1590,"config":1770},{"href":1592,"dataGaName":1593,"dataGaLocation":1542},{"text":1772,"config":1773},"Cookieの設定",{"dataGaName":1602,"dataGaLocation":1542,"id":1603,"isOneTrustButton":189},{"text":1595,"config":1775},{"href":1597,"dataGaName":1598,"dataGaLocation":1542},[1777,1790],{"id":1778,"title":7,"body":1081,"config":1779,"content":1781,"description":1081,"extension":1784,"meta":1785,"navigation":189,"path":1786,"seo":1787,"stem":1788,"__hash__":1789},"blogAuthors/en-us/blog/authors/erick-bajao.yml",{"template":1780},"BlogAuthor",{"name":7,"config":1782},{"headshot":1783},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1785949710/hopuhfq9uc0g2e4vfnsz.png","yml",{},"/en-us/blog/authors/erick-bajao",{},"en-us/blog/authors/erick-bajao","Fn6zEYOUr3cr397JsUCaPhmDvXhsxhKZCy3Dqzpx-SM",{"id":1791,"title":8,"body":1081,"config":1792,"content":1793,"description":1081,"extension":1784,"meta":1797,"navigation":189,"path":1798,"seo":1799,"stem":1800,"__hash__":1801},"blogAuthors/en-us/blog/authors/joe-randazzo.yml",{"template":1780},{"name":8,"config":1794},{"headshot":1795,"ctfId":1796},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664711/Blog/Author%20Headshots/randazzo.jpg","5DxpEbIVcwN2ukwiEMsHlH",{},"/en-us/blog/authors/joe-randazzo",{},"en-us/blog/authors/joe-randazzo","Kg6ZOiBKQgjjlIpsfIAWHsug3iGMaAK1trTdXg4BaFI",[1803,1811,1819],{"title":1804,"description":1805,"heroImage":1806,"category":1077,"date":1807,"authors":1808,"slug":1810,"externalUrl":1081},"Claudeが書き、GitLabがつなぐ：本番環境まで途切れないセキュリティ","Claude Securityはコーディングセッション内で脆弱性を検出します。そこから先はGitLabが引き継ぎ、スキャン、ポリシーの適用、そしてソフトウェアライフサイクル全体の監査エビデンス作成までを担います。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756122536/akivvcnafog9c4dhhzkp.png","2026-08-03",[1809],"Alisa Ho","claude-security-and-gitlab",{"title":1812,"description":1813,"heroImage":1814,"category":1077,"date":1815,"authors":1816,"slug":1818,"externalUrl":1081},"GitLab Duoセキュリティレビューでスキャナーが見逃すロジックの欠陥を検出","AIによるセキュリティ推論で、コードレビューの段階のうちに認可の不備やビジネスロジックのエラー、レース条件を検出します。","https://res.cloudinary.com/about-gitlab-com/image/upload/v1783980535/t3gez0gpayfndrhncunf.png","2026-07-16",[1817],"Mark Settle","gitlab-duo-security-review-flow",{"title":1820,"description":1821,"heroImage":1814,"category":1077,"date":1815,"authors":1822,"slug":1823,"externalUrl":1081},"バージョンアップでビルドが壊れてもGitLabが修正します","依存関係の自動アップグレード、破壊的変更へのコード調整、承認のための変更ルーティングを実現するのはGitLabだけ。すべてのコンテキストを踏まえたネイティブな対応です。",[1817],"dependency-scanning-auto-remediation",{"promotions":1825},[1826,1840,1851,1862],{"id":1827,"categories":1828,"header":1830,"text":1831,"button":1832,"image":1837},"ai-modernization",[1829],"ai","AIの真価、組織全体で発揮できていますか？","所要時間は5分以内です",{"text":1833,"config":1834},"AI成熟度スコアを確認する",{"href":1835,"dataGaName":1836,"dataGaLocation":1309},"/ja-jp/assessments/ai-modernization-assessment/","modernization assessment",{"config":1838},{"src":1839},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1841,"categories":1842,"header":1843,"text":1831,"button":1844,"image":1848},"devops-modernization",[1092,1641],"単にツールを管理するだけでなく、イノベーションを提供していますか？",{"text":1845,"config":1846},"DevOps成熟度スコアを確認しましょう",{"href":1847,"dataGaName":1836,"dataGaLocation":1309},"/ja-jp/assessments/devops-modernization-assessment/",{"config":1849},{"src":1850},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1852,"categories":1853,"header":1854,"text":1831,"button":1855,"image":1859},"security-modernization",[1077],"スピードのためにセキュリティを犠牲にしていませんか？",{"text":1856,"config":1857},"セキュリティ成熟度スコアを確認しましょう",{"href":1858,"dataGaName":1836,"dataGaLocation":1309},"/ja-jp/assessments/security-modernization-assessment/",{"config":1860},{"src":1861},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1863,"paths":1864,"header":1867,"text":1868,"button":1869,"image":1874},"github-azure-migration",[1865,1866],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","チームはGitHubのAzure移行に対応できていますか？","GitHubはすでにAzureを基盤として再構築を進めています。それがあなたのチームにとって何を意味するのか、ご確認ください。",{"text":1870,"config":1871},"GitLabとGitHubの比較を見る",{"href":1872,"dataGaName":1873,"dataGaLocation":1309},"/ja-jp/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1875},{"src":1850},{"header":1877,"blurb":1878,"button":1879,"secondaryButton":1883},"今すぐ開発をスピードアップ","DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。\n",{"text":1103,"config":1880},{"href":1881,"dataGaName":1106,"dataGaLocation":1882},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/ja-jp/","feature",{"text":1425,"config":1884},{"href":1434,"dataGaName":1111,"dataGaLocation":1882},1786803752802]