목차

, , , , ,

mc configuration

MinIO Client의 alias, credential, certificate, runtime option을 안전하게 구성하는 방법을 설명한다.

Summary

config.json, mc alias export output, MC_HOST_ALIAS 값에는 secret key가 포함될 수 있다. source repository, wiki, log, ticket에 저장하지 않는다.

File Locations

Linux / macOS

~/.mc/config.json
~/.mc/certs/
~/.mc/certs/CAs/

Windows

mc는 다음 user profile 변수를 순서대로 확인한다.

  1. HOME\.mc\config.json
  2. USERPROFILE\.mc\config.json
  3. HOMEDRIVE+HOMEPATH\.mc\config.json

Custom directory

mc --config-dir /secure/path/mc alias list
MC_CONFIG_DIR=/secure/path/mc mc alias list

MC_CONFIG_DIR에는 file이 아니라 config.json을 담을 directory를 지정한다.

Alias Configuration

Add or update

mc alias set local https://minio.example.com "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY"
mc alias list local

같은 alias가 이미 있으면 새 URL과 credential로 갱신된다.

API signature and bucket lookup

mc alias set local https://s3.example.com "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY" --api S3v4 --path on

Inspect, export, import, remove

mc alias list local
mc alias export local > local.alias.json
mc alias import local < local.alias.json
mc alias remove local
Export file에는 credential이 들어간다. 일시적으로 만들었다면 permission을 제한하고 사용 후 안전하게 폐기한다.

Configuration Format

Alias object에는 다음 핵심 field가 사용된다.

아래는 구조 설명용 redacted example이다. 실제 값은 mc alias set으로 작성한다.

{
  "url": "https://minio.example.com",
  "accessKey": "REDACTED",
  "secretKey": "REDACTED",
  "api": "S3v4",
  "path": "auto"
}
config.json 전체 schema는 client release에 따라 바뀔 수 있다. file을 직접 생성하거나 전체 덮어쓰기하지 말고 command가 관리하도록 둔다.

Environment Variables

Temporary host alias

MC_HOST_ALIAS 형식의 environment variable로 configuration file에 alias를 영구 저장하지 않고 script용 endpoint를 지정할 수 있다. suffix의 ALIAS를 실제 alias name으로 바꾼다.

export MC_HOST_ci="https://${MINIO_ACCESS_KEY}:${MINIO_SECRET_KEY}@minio.example.com"
mc ls ci
unset MC_HOST_ci
URL에 포함된 credential이 process environment, diagnostic dump, CI log에 노출될 수 있다. CI secret masking과 최소 권한 credential을 사용하고 command tracing을 끈다.

Global behavior

Certificates

새 alias를 등록할 때 client는 server certificate fingerprint의 신뢰 여부를 물을 수 있다. 신뢰한 CA는 Unix-like system에서 ~/.mc/certs/CAs/ 아래에 저장된다.

조직 내부 CA를 사용할 때는 검증된 CA certificate를 CA directory에 배치하고 정상 certificate chain으로 연결한다.

–insecure 또는 MC_INSECURE는 TLS verification을 끈다. certificate 문제를 우회한 채 production configuration에 남기지 않는다.

Permissions and Backup

chmod 700 ~/.mc
chmod 600 ~/.mc/config.json

Validation

mc alias list local
mc ls local
mc admin info local

Troubleshooting

다른 config가 읽힘

MC_CONFIG_DIR와 command line의 –config-dir 사용 여부를 확인한다. service account, container, sudo는 interactive user와 home directory가 다를 수 있다.

Alias는 있지만 Access Denied가 발생함

Alias 존재 여부와 authorization은 별개다. credential이 bucket/prefix에 필요한 S3 action을 허용하는지 server policy를 확인한다.

Endpoint hostname과 certificate name이 다름

DNS와 certificate SAN을 수정한다. –resolve HOST[:PORT]=IP로 진단할 수 있지만 request hostname과 certificate 검증 관계를 유지해야 한다.

mc --resolve minio.example.com:443=192.0.2.10 ls local

See Also

History