SFTP, SCP/SSH, Rsync, HTTP ๋ฐ WebDav ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ํ ์๊ฒฉ ์ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ ์ ์๋ SFTPGo 2.2 ์๋ฒ ๋ฆด๋ฆฌ์ค๊ฐ ์ถ์๋์์ต๋๋ค. ๋ฌด์๋ณด๋ค๋ SFTPGo๋ SSH ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Git ์ ์ฅ์์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ ๋ก์ปฌ ํ์ผ ์์คํ ๊ณผ Amazon S3, Google Cloud Storage ๋ฐ Azure Blob Storage์ ํธํ๋๋ ์ธ๋ถ ์ ์ฅ์์์ ๋ชจ๋ ์ ์กํ ์ ์์ต๋๋ค. ์ํธํ๋ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด PostgreSQL, MySQL, SQLite, CockroachDB ๋๋ bbolt์ ๊ฐ์ SQL ๋๋ ํค/๊ฐ ํ์์ ์ง์ํ๋ DBMS๊ฐ ์ฌ์ฉ๋์ง๋ง, RAM์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์๋ ์์ต๋๋ค. ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค. ํ๋ก์ ํธ ์ฝ๋๋ Go๋ก ์์ฑ๋์์ผ๋ฉฐ GPLv3 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ ๋ฒ์ ์์:
- ์๊ฐ์ด ์ ํ๋ ์ผํ์ฉ ๋น๋ฐ๋ฒํธ(TOTP, RFC 6238)๋ฅผ ์ฌ์ฉํ์ฌ XNUMX๋จ๊ณ ์ธ์ฆ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. Authy ๋ฐ Google Authenticator์ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํ๋ฌ๊ทธ์ธ์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ต๋๋ค. ์ด๋ฏธ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ ์ค์๋ ์ถ๊ฐ ํค ๊ตํ ์๋น์ค ์ง์, ๊ฒ์/๊ตฌ๋ ์ฒด๊ณ ํตํฉ, DBMS์ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด ์ ์ฅ ๋ฐ ๊ฒ์์ด ์์ต๋๋ค.
- REST API์๋ JWT ํ ํฐ ์ธ์ ํค๋ฅผ ์ฌ์ฉํ ์ธ์ฆ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ ๊ฐ๋ณ ๋๋ ํฐ๋ฆฌ ๋ฐ ์ฌ์ฉ์์ ๊ด๋ จํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ์ ์ ์ฑ (๋ฐ์ดํฐ ์๋ช ์ ํ)์ ์ค์ ํ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Swagger UI๋ ์ธ๋ถ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ API ๋ฆฌ์์ค๋ฅผ ํ์ํ ์ ์๋๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
- ์ฐ๊ธฐ ์์ ์ ๋ํ ์ง์์ด ์น ์ธํฐํ์ด์ค์ ์ถ๊ฐ๋์์ต๋๋ค(ํ์ผ ์ ๋ก๋, ๋๋ ํฐ๋ฆฌ ์์ฑ, ์ด๋ฆ ๋ณ๊ฒฝ ๋ฐ ์ญ์ ). ์ด๋ฉ์ผ ํ์ธ์ ํตํด ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ค์ ํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ผ๋ฉฐ, ํ ์คํธ ํ์ผ ํธ์ง๊ธฐ์ PDF ๋ฌธ์ ๋ทฐ์ด๊ฐ ํตํฉ๋์์ต๋๋ค. ์ธ๋ถ ์ฌ์ฉ์์๊ฒ ๊ฐ๋ณ ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด HTTP ๋งํฌ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, ๋ณ๋์ ์ก์ธ์ค ๋น๋ฐ๋ฒํธ ์ค์ , IP ์ฃผ์ ์ ํ, ๋งํฌ ์๋ช ์ค์ ๋ฐ ๋ค์ด๋ก๋ ์ ์ ํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
SFTPGo์ ์ฃผ์ ๊ธฐ๋ฅ:
- ๊ฐ ๊ณ์ ์ chroot๋์ด ์ฌ์ฉ์์ ํ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํฉ๋๋ค. ์ฌ์ฉ์์ ํ ๋๋ ํฐ๋ฆฌ ์ธ๋ถ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- ๊ณ์ ์ ์์คํ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ต์ฐจํ์ง ์๋ ๊ฐ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค. SQLite, MySQL, PostgreSQL, bbolt ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ฐ์ ๋ฐ ์์คํ ๊ณ์ ๋งคํ์ ์ํ ์๋จ์ด ์ ๊ณต๋ฉ๋๋ค. ์ง์ ๋๋ ์์ ๋งคํ์ด ๊ฐ๋ฅํฉ๋๋ค(ํ ์์คํ ์ฌ์ฉ์๋ฅผ ๋ค๋ฅธ ๊ฐ์ ์ฌ์ฉ์์ ๋งคํํ ์ ์์).
- ๊ณต๊ฐ ํค, SSH ํค ๋ฐ ์ํธ ์ธ์ฆ์ด ์ง์๋ฉ๋๋ค(ํค๋ณด๋ ์ํธ ์ ๋ ฅ์ ํตํ ๋ํํ ์ธ์ฆ ํฌํจ). ์ฌ์ฉ์๋ณ๋ก ์ฌ๋ฌ ๊ฐ์ ํค๋ฅผ ๋ฐ์ธ๋ฉํ ์ ์์ผ๋ฉฐ ๋ค๋จ๊ณ ๋ฐ ๋ค๋จ๊ณ ์ธ์ฆ(์: ํค ์ธ์ฆ์ ์ฑ๊ณตํ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ๊ฐ๋ก ์๊ตฌํ ์ ์์)์ ์ค์ ํ ์ ์์ต๋๋ค.
- ๊ฐ ์ฌ์ฉ์์ ๋ํด ์๋ก ๋ค๋ฅธ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๊ตฌ์ฑํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ธ๋ถ ์ธ์ฆ์ ํ๋ก๊ทธ๋จ(์: LDAP์ ํตํ ์ธ์ฆ)์ ํธ์ถํ๊ฑฐ๋ HTTP API๋ฅผ ํตํด ์์ฒญ์ ์ ์กํ์ฌ ๊ตฌํ๋๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ์ ์ ์ํ ์ ์์ต๋๋ค.
- ์ธ๋ถ ํธ๋ค๋ฌ ๋๋ HTTP API ํธ์ถ์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๊ธฐ ์ ์ ํธ์ถ๋๋ ์ฌ์ฉ์ ์ค์ ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ ์ ์ฌ์ฉ์์ ๋์ ์์ฑ์ด ์ง์๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ํฌ๊ธฐ ๋ฐ ํ์ผ ์์ ๋ํ ๊ฐ๋ณ ํ ๋น๋ ์ง์.
- ๋ค์ด์ค๊ณ ๋๊ฐ๋ ํธ๋ํฝ์ ๋ํ ์ ํ๊ณผ ๋์ ์ฐ๊ฒฐ ์์ ๋ํ ์ ํ์ ๋ํ ๋ณ๋์ ์ค์ ์ผ๋ก ๋์ญํญ ์ ํ์ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์ ๋๋ ๋๋ ํฐ๋ฆฌ์ ๊ด๋ จํ์ฌ ์๋ํ๋ ์ก์ธ์ค ์ ์ด ๋๊ตฌ(ํ์ผ ๋ชฉ๋ก ๋ณด๊ธฐ ์ ํ, ์ ๋ก๋, ๋ค์ด๋ก๋, ๋ฎ์ด์ฐ๊ธฐ, ์ญ์ , ์ด๋ฆ ๋ณ๊ฒฝ ๋๋ ์ก์ธ์ค ๊ถํ ๋ณ๊ฒฝ ๊ธ์ง, ๋๋ ํฐ๋ฆฌ ๋๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ ๊ธ์ง ๋ฑ).
- ๊ฐ ์ฌ์ฉ์์ ๋ํด ๊ฐ๋ณ ๋คํธ์ํฌ ์ ํ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํน์ IP ๋๋ ์๋ธ๋ท์ ์ก์ธ์ค๋ง ํ์ฉํ ์ ์์ต๋๋ค.
- ๊ฐ๋ณ ์ฌ์ฉ์ ๋ฐ ๋๋ ํฐ๋ฆฌ์ ๊ด๋ จํ์ฌ ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ์ฝํ ์ธ ์ ๋ํ ํํฐ ์ฐ๊ฒฐ์ ์ง์ํฉ๋๋ค(์: ํน์ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ ๋ค์ด๋ก๋๋ฅผ ์ฐจ๋จํ ์ ์์).
- ํ์ผ์ ๋ค์ํ ์์ (๋ก๋, ์ญ์ , ์ด๋ฆ ๋ณ๊ฒฝ ๋ฑ) ์ค์ ์คํ๋๋ ํธ๋ค๋ฌ๋ฅผ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค. ํธ๋ค๋ฌ ํธ์ถ ์ธ์๋ HTTP ์์ฒญ ํ์์ผ๋ก ์๋ฆผ ์ ์ก์ด ์ง์๋ฉ๋๋ค.
- ๋นํ์ฑ ์ฐ๊ฒฐ์ ์๋ ์ข ๋ฃ.
- ์ฐ๊ฒฐ์ ๋์ง ์๊ณ ์์์ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ.
- Prometheus์์ ๋ชจ๋ํฐ๋ง์ ์ํ ๋ฉํธ๋ฆญ์ ์ ๊ณตํฉ๋๋ค.
- HAProxy PROXY ํ๋กํ ์ฝ์ ์ฌ์ฉ์์ ์์ค IP ์ฃผ์์ ๋ํ ์ ๋ณด๋ฅผ ์์ง ์๊ณ ๋ถํ ๋ถ์ฐ ๋๋ SFTP/SCP ์๋น์ค์ ๋ํ ํ๋ก์ ์ฐ๊ฒฐ์ ๊ตฌ์ฑํ๋๋ก ์ง์๋ฉ๋๋ค.
- ์ฌ์ฉ์ ๋ฐ ๋๋ ํ ๋ฆฌ ๊ด๋ฆฌ, ๋ฐฑ์ ์์ฑ ๋ฐ ํ์ฑ ์ฐ๊ฒฐ ๋ณด๊ณ ๋ฅผ ์ํ REST API.
- ๊ตฌ์ฑ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ํ ์น ์ธํฐํ์ด์ค(http://127.0.0.1:8080/web)(์ผ๋ฐ ๊ตฌ์ฑ ํ์ผ์ ํตํ ๊ตฌ์ฑ๋ ์ง์๋จ).
- JSON, TOML, YAML, HCL ๋ฐ envfile ํ์์ผ๋ก ์ค์ ์ ์ ์ํ๋ ๊ธฐ๋ฅ.
- ์์คํ ๋ช ๋ น์ ๋ํ ์ ํ๋ ์ก์ธ์ค๋ก SSH๋ฅผ ํตํ ์ฐ๊ฒฐ์ ์ง์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Git(git-receive-pack, git-upload-pack, git-upload-archive) ๋ฐ rsync์ ํ์ํ ๋ช ๋ น์ ๋ฌผ๋ก ์ฌ๋ฌ ๋ด์ฅ ๋ช ๋ น(scp, md5sum, sha*sum, cd, pwd, sftpgo-copy ๋ฐ sftpgo-remove).
- ๋ฉํฐ์บ์คํธ DNS๋ฅผ ํตํด ๊ด๊ณ ๋๋ ์ฐ๊ฒฐ ์๊ฒฉ ์ฆ๋ช ์ ์๋ ์์ฑ์ผ๋ก ํ๋์ ๊ณต์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํ ํด๋์ฉ ๋ชจ๋.
- ์ฑ๋ฅ ๋ถ์์ ์ํ ๋ด์ฅํ ํ๋กํ์ผ๋ง ์์คํ .
- ๊ฐ์ํ๋ Linux ์์คํ ๊ณ์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค.
- JSON ํ์์ผ๋ก ๋ก๊ทธ๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๊ฐ์ ๋๋ ํฐ๋ฆฌ ์ง์(์: ํน์ ๋๋ ํฐ๋ฆฌ์ ๋ด์ฉ์ ๋ก์ปฌ ํ์ผ ์์คํ ์ด ์๋ ์ธ๋ถ ํด๋ผ์ฐ๋ ์ ์ฅ์์์ ์ ๊ณต๋ ์ ์์).
- ํ์ผ ์์คํ ์ ์ ์ฅํ ๋ ์ฆ์์์ ๋ฐ์ดํฐ๋ฅผ ํฌ๋ช ํ๊ฒ ์ํธํํ๊ณ ์ ๋ก๋ํ ๋ ํด๋ ํ๊ธฐ ์ํด cryptfs๋ฅผ ์ง์ํฉ๋๋ค.
- ๋ค๋ฅธ SFTP ์๋ฒ๋ก ์ฐ๊ฒฐ ์ ๋ฌ ์ง์.
- SFTPGo๋ฅผ OpenSSH์ฉ SFTP ํ์ ์์คํ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ.
- ์๊ฒฉ ์ฆ๋ช ๋ฐ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ Vault, GCP KMS, AWS KMS์ ๊ฐ์ KMS ์๋ฒ(ํค ๊ด๋ฆฌ ์๋น์ค)๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ ํ์์ผ๋ก ์ ์ฅํ๋ ๊ธฐ๋ฅ.
์ถ์ฒ : opennet.ru