μΈμ¦ λ©μ»€λμ¦.
μ΄ νμ΄μ§μ λ΄μ©
κ°μ
μ΄ κ°μ΄λμμλ MongoDB Community Editionμμ μ¬μ©ν μ μλ κ° μΈμ¦ λ©μ»€λμ¦μ μ¬μ©νμ¬ MongoDBλ‘ μΈμ¦ νλ λ°©λ²μ λ°°μΈ μ μμ΅λλ€. μΈμ¦ λ©μ»€λμ¦μ λλΌμ΄λ² λ° MongoDB Deploymentκ° λ³΄μμ 보μ₯νκΈ° μν΄ IDλ₯Ό νμΈνκ³ μ λ’°λ₯Ό ν보νλ νλ‘μΈμ€μ λλ€.
μ΅μ λ²μ μ MongoDB Community Editionμμ μ¬μ©ν μ μλ λ©μ»€λμ¦μ λ€μκ³Ό κ°μ΅λλ€.
Kerberos
λλ LDAP
λ₯Ό μ¬μ©νμ¬ μΈμ¦νλ €λ©΄ μν°νλΌμ΄μ¦ μΈμ¦ λ©μ»€λμ¦ κ°μ΄λ λ₯Ό μ°Έμ‘°νμΈμ. MongoDB cluster μ μ°κ²°μ μ€μ νλ λ°©λ²μ λν μμΈν λ΄μ©μ μ°κ²° κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.
μΈμ¦ λ©μ»€λμ¦ μ§μ
λ€μ μ€ νλλ₯Ό μ¬μ©νμ¬ MongoDBμ μ°κ²°ν λ μΈμ¦ λ©μ»€λμ¦ λ° μ격 μ¦λͺ μ μ§μ ν μ μμ΅λλ€.
μ°κ²° λ¬Έμμ΄
MongoCredential
ν©ν 리 λ©μλ
μ°κ²° λ¬Έμμ΄ (λλ μ°κ²° URL)μ MongoDB ν΄λ¬μ€ν°μ μ°κ²°νκ³ μΈμ¦νλ λ°©λ²μ μ§μ ν©λλ€.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ μΈμ¦νλ €λ©΄ μ°κ²° λ¬Έμμ΄μ μ€μ μ ν¬ν¨νκ³ MongoClients.create()
λ©μλμ μ λ¬νμ¬ MongoClient
λ₯Ό μΈμ€ν΄μ€νν©λλ€. Connection String νμ μ ννμ¬ μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ μΈμ¦νλ ꡬ문μ νμΈν©λλ€.
λλ MongoCredential
ν΄λμ€λ₯Ό μ¬μ©νμ¬ μΈμ¦ μΈλΆ μ 보λ₯Ό μ§μ ν μ μμ΅λλ€. MongoCredential
ν΄λμ€μλ μΈμ¦ λ©μ»€λμ¦κ³Ό μ격 μ¦λͺ
μ΄ ν¬ν¨λ μΈμ€ν΄μ€λ₯Ό ꡬμ±νλ μ μ ν©ν 리 λ©μλκ° ν¬ν¨λμ΄ μμ΅λλ€. MongoCredential
ν¬νΌ ν΄λμ€λ₯Ό μ¬μ©νλ κ²½μ° MongoClient
κ΅¬μ± μ MongoClientSettings.Builder
ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ°κ²° μ€μ μ ꡬμ±ν΄μΌ ν©λλ€. MongoCredential νμ μ ννλ©΄ MongoCredential
μ μ¬μ©νμ¬ μΈμ¦νλ ꡬ문μ λ³Ό μ μμ΅λλ€.
μ΄λ¬ν ν΄λμ€ λ° λ©μλμ λν μμΈν λ΄μ©μ λ€μ API λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
λ©μ»€λμ¦
κΈ°λ³Έκ°
κΈ°λ³Έ μΈμ¦ λ©μ»€λμ¦ μ€μ μ μ¬μ© μ€μΈ MongoDB Server λ²μ μ΄ μ§μνλ μΈμ¦ λ©μ»€λμ¦μ λ°λΌ λ€μ μΈμ¦ λ©μ»€λμ¦ μ€ νλλ₯Ό μ¬μ©ν©λλ€.
SCRAM-SHA-256
SCRAM-SHA-1
MONGODB-CR
MongoDB Server λ²μ 3.6 μ΄νμμλ MONGODB-CR
μ κΈ°λ³Έ λ©μ»€λμ¦μΌλ‘ μ¬μ©ν©λλ€. μ΅μ λ²μ μ MongoDB Serverλ μ§μμ μ리λ λ©μ»€λμ¦ μ€ νλλ₯Ό μ¬μ©ν©λλ€.
λ€μ μ½λ μ€λν«μ λ€μ μ리 νμμλ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
username
- MongoDB μ¬μ©μ μ΄λ¦password
- MongoDB μ¬μ©μμ λΉλ°λ²νΈhostname
- ν΄λΌμ΄μΈνΈκ° μ‘μΈμ€ν μ μλ MongoDB λ°°ν¬μλ²μ λ€νΈμν¬ μ£Όμport
- MongoDB λ°°ν¬μλ²μ ν¬νΈ λ²νΈauthenticationDb
- μ¬μ©μμ μΈμ¦ λ°μ΄ν°κ° ν¬ν¨λ MongoDB λ°μ΄ν°λ² μ΄μ€. μ΄ λ§€κ°λ³μλ₯Ό μλ΅νλ©΄ λλΌμ΄λ²λ κΈ°λ³Έκ°admin
μ μ¬μ©ν©λλ€.
μ΄ μΈμ¦ λ©μ»€λμ¦ μ§μ μ λν μ§μΉ¨κ³Ό μμ μ½λλ₯Ό λ³΄λ €λ©΄ μλ Connection String λλ MongoCredential νμ μ ννμΈμ.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ κΈ°λ³Έ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ ν΄λΉ λ©μ»€λμ¦μ μλ΅νμΈμ. MongoClient
μ(λ₯Ό) μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
MongoCredential
ν΄λμ€λ₯Ό μ¬μ©νμ¬ κΈ°λ³Έκ° μΈμ¦ λ©μ»€λμ¦ μ μ§μ νλ €λ©΄ createCredential()
λ©μλλ₯Ό μ¬μ©ν©λλ€. MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoCredential credential = MongoCredential.createCredential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
MongoDBκ° μ§μνλ CR(μ±λ¦°μ§-μλ΅) λ° SCRAM(μν°λ μ±λ¦°μ§-μλ΅ μΈμ¦ λ©μ»€λμ¦)μ λν μμΈν λ΄μ©μ MongoDB Server λ§€λ΄μΌμ SCRAM μΉμ μ μ°Έμ‘°νμΈμ.
SCRAM-SHA-256
μ°Έκ³
SCRAM-SHA-256
MongoDB 4.0λΆν° μ§μλλ MongoDBμ κΈ°λ³Έ μΈμ¦ λ°©λ²μ
λλ€.
SCRAM-SHA-256
SHA-256
μκ³ λ¦¬μ¦μΌλ‘ μνΈνλ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νμ¬ μ¬μ©μλ₯Ό μΈμ¦νλ SCRAM(μν°λ μ±λ¦°μ§-μλ΅ μΈμ¦ λ©μ»€λμ¦)μ
λλ€.
λ€μ μ½λ μ€λν«μ λ€μ μ리 νμμλ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
username
- MongoDB μ¬μ©μ μ΄λ¦password
- MongoDB μ¬μ©μμ λΉλ°λ²νΈhostname
- ν΄λΌμ΄μΈνΈκ° μ‘μΈμ€ν μ μλ MongoDB λ°°ν¬μ λ€νΈμν¬ μ£Όμport
- MongoDB deploymentμ ν¬νΈ λ²νΈμ λλ€.authenticationDb
- μ¬μ©μμ μΈμ¦ λ°μ΄ν°κ° ν¬ν¨λ MongoDB λ°μ΄ν°λ² μ΄μ€. μ΄ λ§€κ°λ³μλ₯Ό μλ΅νλ©΄ λλΌμ΄λ²λ κΈ°λ³Έκ°admin
μ μ¬μ©ν©λλ€.
μ΄ μΈμ¦ λ©μ»€λμ¦ μ§μ μ λν μ§μΉ¨κ³Ό μμ μ½λλ₯Ό λ³΄λ €λ©΄ μλ Connection String λλ MongoCredential νμ μ ννμΈμ.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ SCRAM-SHA-256
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ μ°κ²° λ¬Έμμ΄μμ authMechanism
λ§€κ° λ³μμ SCRAM-SHA-256
κ°μ ν λΉν©λλ€. MongoClient
μ μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");
ν΄λμ€λ₯Ό μ¬μ©νμ¬ κΈ°λ³Έ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ MongoCredential
createScramSha256Credential() λ©μλ. MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoCredential credential = MongoCredential.createScramSha256Credential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
SCRAM-SHA-1
μ°Έκ³
SCRAM-SHA-1
MongoDB λ²μ 3.0, 3.2, 3.4, 3.6μ κΈ°λ³Έ μΈμ¦ λ°©λ²μ
λλ€.
SCRAM-SHA-1
SHA-1
μκ³ λ¦¬μ¦μΌλ‘ μνΈνλ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νμ¬ μ¬μ©μλ₯Ό μΈμ¦νλ SCRAM(μν°λ μ±λ¦°μ§-μλ΅ λ©μ»€λμ¦)μ
λλ€.
λ€μ μ½λ μ€λν«μ λ€μ μ리 νμμλ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
username
- MongoDB μ¬μ©μ μ΄λ¦password
- MongoDB μ¬μ©μμ λΉλ°λ²νΈhostname
- ν΄λΌμ΄μΈνΈκ° μ‘μΈμ€ν μ μλ MongoDB λ°°ν¬μ λ€νΈμν¬ μ£Όμport
- MongoDB deploymentμ ν¬νΈ λ²νΈμ λλ€.authenticationDb
- μ¬μ©μμ μΈμ¦ λ°μ΄ν°κ° ν¬ν¨λ MongoDB λ°μ΄ν°λ² μ΄μ€. μ΄ λ§€κ°λ³μλ₯Ό μλ΅νλ©΄ λλΌμ΄λ²λ κΈ°λ³Έκ°admin
μ μ¬μ©ν©λλ€.
μ΄ μΈμ¦ λ©μ»€λμ¦ μ§μ μ λν μ§μΉ¨κ³Ό μμ μ½λλ₯Ό λ³΄λ €λ©΄ μλ Connection String λλ MongoCredential νμ μ ννμΈμ.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ SCRAM-SHA-1
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ μ°κ²° λ¬Έμμ΄μμ authMechanism
λ§€κ° λ³μμ SCRAM-SHA-1
κ°μ ν λΉν©λλ€. MongoClient
μ μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");
ν΄λμ€λ₯Ό μ¬μ©νμ¬ κΈ°λ³Έ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ MongoCredential
createScramSha1Credential() λ©μλ. MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoCredential credential = MongoCredential.createScramSha1Credential("<db_username>", "<authenticationDb>", "<db_password>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
MONGODB-CR
MONGODB-CR
μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νμ¬ μ¬μ©μλ₯Ό μΈμ¦νλ μ±λ¦°μ§-μλ΅ μΈμ¦ λ©μ»€λμ¦μ
λλ€. μ΄ μΈμ¦ λ©μ»€λμ¦μ MongoDB 3.6λΆν° μ¬μ©λμ§ μμΌλ©° MongoDB 4.0λΆν° λ μ΄μ μ§μλμ§ μμ΅λλ€.
μ΄ λ©μλλ λͺ
μμ μΌλ‘ μ§μ ν μ μμΌλ©° MONGODB-CR
(μ)λ₯Ό μ¬μ©νλ κΈ°λ³Έ μΈμ¦ λ©μ»€λμ¦μμ μ 곡νλ λ체 λ°©λ²μ μ°Έμ‘°νμΈμ.
MONGODB-AWS
μ°Έκ³
MONGODB-AWS μΈμ¦ λ©μ»€λμ¦ μ MongoDB Atlas μμ μ¬μ©ν μ μμ΅λλ€.
MONGODB-AWS
μΈμ¦ λ©μ»€λμ¦μ AWS IAM(Amazon Web Services Identity and Access Management) μ격 μ¦λͺ
μ μ¬μ©ν΄ μ¬μ©μλ₯Ό μΈμ¦ν©λλ€.
Amazon Web Services μ격 μ¦λͺ μ νκ²½ λ³μλ‘ μ μ₯ νκ±°λ μλ μμ μ κ°μ΄ μΈλΌμΈμΌλ‘ μ½μ ν μ μμ΅λλ€. μ΄μ μ λ λ€μ μμλ‘ μ격 μ¦λͺ μ νμΈν©λλ€.
MongoCredential
κ°μ²΄ λλ μ 곡λ μ°κ²° string μ μ 곡λ κ°μ λλ€.νκ²½ λ³μ. (
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
λ° μ νμ μΌλ‘AWS_SESSION_TOKEN
)AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
νκ²½ λ³μμ μ§μ λ Amazon Web Services EC2 μλν¬μΈνΈμ λλ€.κΈ°λ³Έκ° Amazon Web Services EC2 μλν¬μΈνΈμ λλ€. μμΈν λ΄μ© μ μμ μ λν IAM μν μ μ°Έμ‘°νμΈμ.
λ€μ μ½λ μ€λν«μ λ€μ μ리 νμμλ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
awsKeyId
-AWS_ACCESS_KEY_ID
μ κ°μ λλ€.awsSecretKey
-AWS_SECRET_ACCESS_KEY
μ κ°μ λλ€.atlasUri
- MongoDB Atlas μΈμ€ν΄μ€ μ λ€νΈμν¬ μ£Όμ μ λλ€.awsSessionToken
-AWS_SESSION_TOKEN
μ κ°μ λλ€. (μ ν μ¬ν)
μ€μ
URL- μ격 μ¦λͺ μΈμ½λ©
λ°±μ¬λμ λλ κΈ°ν λ¬Έμλ‘ μΈν΄ ꡬ문 λΆμ μ€λ₯κ° λ°μνμ§ μλλ‘ μ격 μ¦λͺ
μ URL μΈμ½λ©ν΄μΌ ν©λλ€. λ€μ μ½λ μμμμλ μ리 νμμ fieldValue
λ‘ νμλλ μν string μ URL μΈμ½λ©νλ λ°©λ²μ λ³΄μ¬ μ€λλ€.
String encodedField = java.net.URLEncoder.encode("<fieldValue>".toString(), "ISO-8859-1");
μ΄ μΈμ¦ λ©μ»€λμ¦ μ§μ μ λν μ§μΉ¨κ³Ό μμ μ½λλ₯Ό λ³΄λ €λ©΄ μλ Connection String λλ MongoCredential νμ μ ννμΈμ.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ MONGODB-AWS
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ μ°κ²° λ¬Έμμ΄μμ authMechanism
λ§€κ° λ³μμ "MONGODB-AWS"
κ°μ ν λΉν©λλ€. MongoClient
μ μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<awsKeyId>:<awsSecretKey>@<atlasUri>?authMechanism=MONGODB-AWS");
Amazon Web Services μΈμ
ν ν°μ μ§μ ν΄μΌ νλ κ²½μ° λ€μκ³Ό κ°μ΄ AWS_SESSION_TOKEN:<awsSessionToken>
νμμ μ¬μ©νμ¬ authMechanismProperties
λ§€κ°λ³μμ ν¬ν¨ν©λλ€. μΈμ
ν ν°μ μ¬μ©νμ¬ MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<awsKeyId>:<awsSecretKey>@<atlasUri>?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>");
ν΄λμ€λ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ MONGODB-AWS
MongoCredential
μ§μ νλ €λ©΄ createAwsCredential() λ©μλ. MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Amazon Web Services μΈμ ν ν°μ μ§μ ν΄μΌ νλ κ²½μ° λ€μ μ ν νλͺ© μ€ νλλ₯Ό μ¬μ©νμ¬ μΆκ°ν μ μμ΅λλ€.
μ°κ²° string μ Amazon Web Services μΈμ ν ν°μ μ§μ ν©λλ€.
μ°κ²° string μ Amazon Web Services μΈμ ν ν°μ
MongoCredential
κ³Ό ν¨κ» μ λ¬νλ €λ©΄authMechanism
λ§€κ°λ³μμ μΈμ¦ λ©μ»€λμ¦μ μ§μ νκ³authMechanismProperties
λ§€κ°λ³μμ μΈμ ν ν°μ μ§μ ν©λλ€. κ·Έλ° λ€μMongoClientSettings
applyConnectionString() μ νΈμΆνμ¬ μ μΆκ°ν©λλ€. λ©μλλ λ€μκ³Ό κ°μ΅λλ€.MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); ConnectionString connectionString = new ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build()); MongoCredentialμ Amazon Web Services μΈμ ν ν°μ μ§μ ν©λλ€.
withMechanismProperty() νΈμΆμ Amazon Web Services μΈμ ν ν°μ
MongoCredential
μ§μ νμ¬ μΈμ€ν΄μ€μ ν¬ν¨ν μ μμ΅λλ€. λ©μλλ₯Ό νΈμΆν©λλ€.MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>"); ConnectionString connectionString = new ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build()); νκ²½ λ³μμ Amazon Web Services μΈμ ν ν°μ μ§μ ν©λλ€.
ν΄λΌμ΄μΈνΈ μ€ν νκ²½μμ
AWS_SESSION_TOKEN
λΌλ νκ²½ λ³μλ₯Ό μ€μ νκ³ ν ν°μ ν λΉν©λλ€.MONGODB-AWS
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ©΄MongoClient
μμ μ΄ κ°μ μλμΌλ‘ μ νν©λλ€.
μ격 μ¦λͺ μλ‘ κ³ μΉ¨
μ΄ μ΄μ μ λ μν μμ λλ Elastic Kubernetes Service μ¬μ©κ³Ό κ°μ κ²½μ°μ μ격 μ¦λͺ μλ‘ κ³ μΉ¨μ μ§μν©λλ€.
Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { // Add your code to fetch new credentials, such as assuming a role using the AWS SDK. // Ensure you return the temporary credentials. return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>"); }; MongoCredential credential = MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", 27017)))) .credential(credential) .build());
μ°Έκ³
μ°κ²° λ¬Έμμ΄μ AWS IAM μ격 μ¦λͺ μ μ 곡ν΄μΌ νλ κ²½μ°, μ΄μ 릴리μ€μ MONGODB-AWS λλΌμ΄λ² λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
X.509
X.509
μΈμ¦ λ©μ»€λμ¦μ X.509 μΈμ¦μκ° ν¬ν¨λ TLSλ₯Ό μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈ μΈμ¦μμ μλ κ³ μ μ΄λ¦(RDN)μΌλ‘ μλ³λλ μ¬μ©μλ₯Ό μΈμ¦ν©λλ€. X.509
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ©΄ μλ²λ ν΄λΌμ΄μΈνΈ μΈμ¦μμ 주체 μ΄λ¦μ μ¬μ©νμ¬ μ°κ²°μ μΈμ¦ν©λλ€.
λ€μ μ½λ μ€λν«μ λ€μ μ리 νμμλ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ λ°©λ²μ 보μ¬μ€λλ€.
hostname
- ν΄λΌμ΄μΈνΈκ° μ‘μΈμ€ν μ μλ MongoDB λ°°ν¬μ λ€νΈμν¬ μ£Όμport
- MongoDB deploymentμ ν¬νΈ λ²νΈμ λλ€.authenticationDb
- μ¬μ©μμ μΈμ¦ λ°μ΄ν°κ° ν¬ν¨λ MongoDB λ°μ΄ν°λ² μ΄μ€. μ΄ λ§€κ°λ³μλ₯Ό μλ΅νλ©΄ λλΌμ΄λ²λ κΈ°λ³Έκ°admin
μ μ¬μ©ν©λλ€.
μ΄ μΈμ¦ λ©μ»€λμ¦ μ§μ μ λν μ§μΉ¨κ³Ό μμ μ½λλ₯Ό λ³΄λ €λ©΄ μλ Connection String λλ MongoCredential νμ μ ννμΈμ.
μ°κ²° λ¬Έμμ΄μ μ¬μ©νμ¬ X.509
μΈμ¦ λ©μ»€λμ¦μ μ§μ νλ €λ©΄ authMechanism
λ§€κ°λ³μμ MONGODB-X509
κ°μ ν λΉνκ³ tls
λ§€κ°λ³μμ true
κ°μ ν λΉνμ¬ TLSλ₯Ό νμ±νν©λλ€. MongoClient
λ₯Ό μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoClient mongoClient = MongoClients.create("mongodb://<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=MONGODB-X509&tls=true");
ν΄λμ€λ₯Ό μ¬μ©νμ¬ μΈμ¦ λ©μ»€λμ¦ μ X.509
MongoCredential
μ§μ νλ €λ©΄ createMongoX509Credential() λ©μλ. λν applyToSslSettings() λ₯Ό νΈμΆνμ¬ TLSλ₯Ό νμ±ν enabled
true
ν©λλ€. λ©μλλ₯Ό μ€ννκ³ SslSettings.Builder μμ μμ± μ λ‘ μ€μ ν©λλ€. μ°¨λ¨. MongoClient
μ(λ₯Ό) μΈμ€ν΄μ€ννλ μ½λλ λ€μκ³Ό κ°μ΄ μμ±ν΄μΌ ν©λλ€.
MongoCredential credential = MongoCredential.createMongoX509Credential(); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .applyToSslSettings(builder -> builder.enabled(true); ) .credential(credential) .build());
μΈμ¦μλ₯Ό μ¬μ©νλλ‘ μ ν리μΌμ΄μ μ ꡬμ±νλ λ°©λ²κ³Ό TLS/SSL μ΅μ μ λν μμΈν λ΄μ©μ TLS/SSL κ°μ΄λλ₯Ό μ°Έμ‘°νμΈμ.