{"meta":{"title":"REST API에 대한 비밀 암호화","intro":"REST API를 사용하여 비밀을 만들거나 업데이트하려면 비밀 값을 암호화해야 합니다.","product":"REST API","breadcrumbs":[{"href":"/ko/enterprise-cloud@latest/rest","title":"REST API"},{"href":"/ko/enterprise-cloud@latest/rest/guides","title":"가이드"},{"href":"/ko/enterprise-cloud@latest/rest/guides/encrypting-secrets-for-the-rest-api","title":"비밀 암호화"}],"documentType":"article"},"body":"# REST API에 대한 비밀 암호화\n\nREST API를 사용하여 비밀을 만들거나 업데이트하려면 비밀 값을 암호화해야 합니다.\n\n## 비밀 정보 암호화에 대하여\n\n여러 REST API 엔드포인트를 사용하면 GitHub에 비밀을 만들 수 있습니다. 이러한 엔드포인트를 사용하려면 libsodium을 사용하여 비밀 값을 암호화해야 합니다. 자세한 정보는 [libsodium 설명서](https://libsodium.gitbook.io/doc/bindings_for_other_languages)를 참조하세요.\n\n비밀을 암호화하려면 Base64로 인코딩된 공개 키가 필요합니다. REST API에서 공개 키를 받을 수 있습니다. 공개 키를 가져오는 데 사용할 엔드포인트를 확인하려면 비밀을 만드는 데 사용할 엔드포인트의 `encrypted_value` 매개 변수에 대한 설명서를 참조하세요.\n\n## Node.js를 사용하여 비밀을 암호화하는 예제\n\nNode.js를 사용하는 경우 libsodium-wrappers 라이브러리를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers)를 참조하세요.\n\n다음 예제에서는 암호화하려는 일반 텍스트 값으로 `YOUR_SECRET`을 바꿉니다. Base64로 인코딩된 공개 키로 `YOUR_BASE64_KEY`를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다. \n`ORIGINAL`는 자리 표시자가 아니며, libsodium-wrappers 라이브러리의 매개 변수입니다.\n\n```javascript copy\nconst sodium = require('libsodium-wrappers')\n\nconst secret = 'YOUR_SECRET'\nconst key = 'YOUR_BASE64_KEY'\n\n//Check if libsodium is ready and then proceed.\nsodium.ready.then(() => {\n  // Convert the secret and key to a Uint8Array.\n  let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)\n  let binsec = sodium.from_string(secret)\n\n  // Encrypt the secret using libsodium\n  let encBytes = sodium.crypto_box_seal(binsec, binkey)\n\n  // Convert the encrypted Uint8Array to Base64\n  let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)\n\n  // Print the output\n  console.log(output)\n});\n```\n\n## Python 사용하여 비밀 암호화 예제\n\nPython 3을 사용하는 경우 PyNaCl 라이브러리를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 [PyNaCl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox)를 참조하세요.\n\n다음 예제에서는 암호화하려는 일반 텍스트 값으로 `YOUR_SECRET`을 바꿉니다. Base64로 인코딩된 공개 키로 `YOUR_BASE64_KEY`를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.\n\n```python copy\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n  \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n  public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n  sealed_box = public.SealedBox(public_key)\n  encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n  return b64encode(encrypted).decode(\"utf-8\")\n\nencrypt(\"YOUR_BASE64_KEY\", \"YOUR_SECRET\")\n```\n\n## C#을 사용한 비밀 암호화 예제\n\nC#을 사용하는 경우 Sodium.Core 패키지를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/)를 참조하세요.\n\n다음 예제에서는 암호화하려는 일반 텍스트 값으로 `YOUR_SECRET`을 바꿉니다. Base64로 인코딩된 공개 키로 `YOUR_BASE64_KEY`를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.\n\n```csharp copy\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"YOUR_SECRET\");\nvar publicKey = Convert.FromBase64String(\"YOUR_BASE64_KEY\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n## Ruby를 사용한 비밀 암호화 예제\n\nRuby를 사용하는 경우 RbNaCl gem을 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 [RbNaCl](https://github.com/RubyCrypto/rbnacl)을 참조하세요.\n\n다음 예제에서는 암호화하려는 일반 텍스트 값으로 `YOUR_SECRET`을 바꿉니다. Base64로 인코딩된 공개 키로 `YOUR_BASE64_KEY`를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.\n\n```ruby copy\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"YOUR_BASE64_KEY\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"YOUR_SECRET\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```"}