-
Notifications
You must be signed in to change notification settings - Fork 56
FEATURE: Add config auth_group command
#921
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
|
@ing-eoking |
sasl_auxprop.c
Outdated
| static const char *zk_root = "/arcus_acl"; | ||
| static const char *g_ensemble_list; | ||
| static char g_group_buf1[GROUP_MAXLEN]; | ||
| static char g_group_buf2[GROUP_MAXLEN]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
g_group_buf๊ฐ 2๊ฐ๊ฐ ํ์ํ๊ฐ์?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
group์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ฑฐ๋ ํด์ ํ๋ ๊ตฌํ์ ๋จ์ํํ๊ธฐ ์ํด ๋์์ต๋๋ค.
namsic
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ํ์ฌ PR์ด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ mutex ๊ตฌ์กฐ ๋ฑ์์ ์๋นํ ๋ณต์กํ๊ณ ์ง๊ด์ ์ด์ง ์์ ํธ์ด๊ณ ,
PR ๊ตฌํ์ ๋ฌด์ํ๊ณ ์์ ํ ์๋ก์ด ๊ตฌํ์ ์ ์ํด ์ฃผ์ด๋ ๋ฉ๋๋ค.
sasl_auxprop.c
Outdated
| static const char *zk_root = "/arcus_acl"; | ||
| static const char *g_ensemble_list; | ||
| static char g_group_buf1[GROUP_MAXLEN]; | ||
| static char g_group_buf2[GROUP_MAXLEN]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
group์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ฑฐ๋ ํด์ ํ๋ ๊ตฌํ์ ๋จ์ํํ๊ธฐ ์ํด ๋์์ต๋๋ค.
jhpark816
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ผ๋ถ ๋ฆฌ๋ทฐ
sasl_auxprop.h
Outdated
| void arcus_auxprop_wakeup(void); | ||
|
|
||
| const char *auxprop_get_acl_group(void); | ||
| int auxprop_set_acl_group(const char *group_name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ด๋ค ์ฉ์ด๊ฐ ๊ฐ์ฅ ๋์๊ฐ์?
- acl group
- auth group
- user group
memcached.c
Outdated
| out_string(c, "SERVER_ERROR out of memory"); | ||
| } else { | ||
| pthread_t tid; | ||
| int ret = pthread_create(&tid, NULL, sasl_set_auth_group, (void*)config); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sasl_set_auth_group() ํธ์ถํ thread main loop๋ฅผ ๋ฐ๋ก ๋์ธ์.
init_sasl_thread() ์ฐธ๊ณ ํ์ธ์.
thread main loop๋ memcached.c์ ์์ด์ผ ํฉ๋๋ค.
sasl_auxprop.c
Outdated
| return NULL; | ||
| } | ||
|
|
||
| snprintf(group_zpath, sizeof(group_zpath), "%s/%s", zk_root, group_name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
group_zpath๋ฅผ ๋งค๋ฒ ๋ง๋ค์ง ์๊ณ ,
group_name์ด ๋ณ๊ฒฝ๋๋ฉด 1ํ๋ง ๋ง๋ค๋ฉด ๋ฉ๋๋ค.
|
๊ฐ์ธ์ ์ผ๋ก table์ ๊ต์ฒดํ๋ ๋ก์ง์ |
๊ตฌํ ๋ณ๊ฒฝ ์ ์by @ing-eoking
|
b4b1af2 to
57a0af5
Compare
|
@namsic |
๋ฆฌ๋ทฐ ์๊ฒฌ์ ๋ฐ๋ผ ๊ตฌํ์ ์ ๋ฆฌํด ๋ ์ํ์ด๊ณ , ํ ์คํธ ๋ฐ ์ต์ข ๊ฒํ ํ ๋ฆฌ๋ทฐ ์ฌ์์ฒญํ๊ฒ ์ต๋๋ค. |
57a0af5 to
3b6d1f5
Compare
namsic
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์๋ ๋ณ๊ฒฝ์ด ์ ์ฉ๋์์ต๋๋ค.
- acl table ๋น๊ต ๋ฐ group ๋ณ๊ฒฝ ์์
์ acl refresh thread๊ฐ ์ํ
- auth group ๋ณ๊ฒฝ ๋ช ๋ น์ new group name ์ค์ ํ๊ณ reload ์์ฒญ
- old table์ ๋ค์ ์กฐํํ์ง ์๊ณ , ๊ธฐ์กด g_sasltable๊ณผ ๋น๊ต
- ๋ฝ์ ์ก์ ์ํ๋ก ์ํ
- auth group ์กฐํ ์ strdup ํ์ฌ ๋ฐํ
- ํธ์ถํ ์ธก(
memcached.c)์์ free ํด์ผ ํจ
- ํธ์ถํ ์ธก(
์ด๋ค ์ฉ์ด๊ฐ ๊ฐ์ฅ ๋์๊ฐ์?
- acl group
- auth group
- user group
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ auth group์ด ๊ฐ์ฅ ๋์ ๋ณด์
๋๋ค.
๋ด๋ถ ๊ตฌํ ์ธก๋ฉด์์ sasl_defs์ sasl_auxprop์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ๋ถํด์ผ ํ๋๋ฐ,
ํ์ฌ PR์ ์๋์ ๊ฐ์ด ํ๊ณ ์์ต๋๋ค.
- sasl_defs์์:
sasl_get_auth_group - sasl_auxprop์์:
arcus_auxprop_get_group
3b6d1f5 to
dfd6eba
Compare
memcached.c
Outdated
| if (ntokens == 3) { | ||
| char buf[50]; | ||
| char *group_name = sasl_get_auth_group(); | ||
| if (!group_name) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์๋ ๋ก์ง๊ณผ ๊ฐ์ด ์ฑ๊ณต -> ์๋ฌ ์์ผ๋ก ๋ฐฐ์นํ๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
jhpark816
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ผ๋ถ ๋ฆฌ๋ทฐํ์์ต๋๋ค.
๋ฐ์ํ์ง ์์ PR์ด๋ผ๋
๋ฒ๊ทธ๋ ์์ ํด์ผ ํ ์ฌํญ์ด๋ผ๋ฉด ๋ฐ์ํด ๋๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
sasl_auxprop.c
Outdated
| mc_logger->log(EXTENSION_LOG_WARNING, NULL, | ||
| "SECURITY_EVENT ACL group change to %s failed: missing key %s\n", | ||
| new_group_name, old_entry->key); | ||
| pthread_mutex_unlock(&g_sasltable_lock); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ ๊ฑฐํด์ผ ํฉ๋๋ค.
sasl_auxprop.c
Outdated
| snprintf(g_group_zpath, sizeof(g_group_zpath), "%s", new_group_zpath); | ||
| pthread_mutex_unlock(&g_sasltable_lock); | ||
|
|
||
| _table_free(old_table); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is_valid ๋ณ์๋ฅผ ๋๋ ์๋ ํํ์ ์ฝ๋๊ฐ ์ฝ๊ธฐ์ ๋์ ๊ฒ ๊ฐ์ต๋๋ค.
char new_key[TABLE_KEY_LEN];
struct sasl_entry *new_entry;
bool is_valid = true;
for (int i = 0; i < SASL_TABLE_SIZE; i++) {
struct sasl_entry *old_entry = g_sasltable[i];
while (old_entry) {
snprintf(new_key, sizeof(new_key), "%s/%s",
new_group_zpath, old_entry->key + origin_group_zpath_len);
new_entry = new_table[hash_function(new_key) % SASL_TABLE_SIZE];
while (new_entry) {
if (strcmp(new_entry->key, new_key) == 0 &&
new_entry->value_len == old_entry->value_len &&
memcmp(new_entry->value, old_entry->value, old_entry->value_len) == 0) {
break;
}
new_entry = new_entry->next;
}
if (new_entry == NULL) { // new_entry not found
is_valid = false;
break;
}
old_entry = old_entry->next;
}
}
if (is_valid) {
} else {
}
sasl_auxprop.c
Outdated
| while (!acl_thread_stopreq) { | ||
| ts.tv_sec += REFRESH_PERIOD; | ||
| pthread_mutex_lock(&acl_thread_lock); | ||
| if (!acl_thread_stopreq) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์กฐ๊ฑด ๋ณ๊ฒฝ
(!acl_thread_stopreq && !change_acl_group)
sasl_auxprop.c
Outdated
| mc_logger->log(EXTENSION_LOG_INFO, NULL, "SECURITY_EVENT ACL group changed to: %s\n", g_group_name); | ||
| continue; | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
acl_thread_stopreq ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก volatile ๋ณ์๋ก ๋๊ณ ,
ํ๋ฒ true ์ค์ ๋๋ฉด ๋ค๋ฅธ ์ค๋ ๋์ ์ํด false๋ก ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
if (change_acl_group) {
int ret = validate_new_acl_group();
if (ret != 0) {
continue;
}
}์ต์ ์ acl_table๊ณผ compareํ์ฌ valid ์ฌ๋ถ๋ฅผ ํ๋จํด์ผ ํ๋ฏ๋ก,
์๋ ์ฝ๋๋ฅผ ๋จผ์ ์ํํ์ฌ ๊ธฐ์กด acl_table์ reloadํ๊ณ ๋์,
acl group ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๊ฒ์ด ๋ง์ง ์๋ ์๊ฐํฉ๋๋ค.
dfd6eba to
d4cb819
Compare
jhpark816
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ผ๋ถ ๋ฆฌ๋ทฐ
sasl_auxprop.c
Outdated
| memcmp(new_entry->value, old_entry->value, old_entry->value_len) == 0) { | ||
| mc_logger->log(EXTENSION_LOG_WARNING, NULL, | ||
| "SECURITY_EVENT ACL group change to %s failed: missing key %s\n", | ||
| new_group_name, old_entry->key); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing key %s ์ด๋ฐ ์ถ๋ ฅ์ด ์ด๊ธฐ PR์ ์์๋์?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if ๋ฌธ ์์์๋ old_entry์ ํด๋นํ๋ new_entry๋ฅผ ์ฐพ์ ์ํ์ด๋ฏ๋ก, ๋ก๊ทธ ์ถ๋ ฅํ๋ฉด ์ ๋ฉ๋๋ค.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing key %s์ด๋ฐ ์ถ๋ ฅ์ด ์ด๊ธฐ PR์ ์์๋์?
acl group ๋ณ๊ฒฝ์ ๋ชจ๋ ๋ก๊ทธ๋ก ๋จ๊ธด๋ค๋ ์ค๊ณ์ ๋ฐ๋ผ ์ด๊ธฐ PR์์๋ ์คํจ ์ ๋์ผํ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๊ณ ์์์ต๋๋ค.
| pthread_mutex_unlock(&g_sasltable_lock); | ||
| _table_free(old_table); | ||
| return 0; | ||
| } else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ด ์์น์ ๋ก๊ทธ ์ถ๋ ฅ์ด ์ค๋ฉด ์ข๊ฒ ์ต๋๋ค.
mc_logger->log(EXTENSION_LOG_WARNING, NULL,
"SECURITY_EVENT ACL group change to %s failed: missing key %s\n",
new_group_name, old_entry->key);| } | ||
| if (new_entry == NULL) { | ||
| is_valid = false; | ||
| break; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
char *missing_key ๋ณ์๋ฅผ ๋ฐ๋ก ๋๊ณ , ์ฌ๊ธฐ์ ์ค์ ํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋๋ฉด, ์ด ์์น์์ ๋ก๊ทธ ์ถ๋ ฅํด์ผ ํ๊ณ ์.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing key๋ ๋ฐ๋ก ๊ธฐ๋กํ์ง ์๊ณ , ๋จ์ ์คํจ ์ฌ์ค๋ง ๋ก๊ทธ๋ก ๋จ๊ธฐ๋ ๊ฒ์ผ๋ก ํ๊ฒ ์ต๋๋ค.
| if (ret == 0) { | ||
| mc_logger->log(EXTENSION_LOG_INFO, NULL, "SECURITY_EVENT ACL group changed to: %s\n", g_group_name); | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์๋์ ์๋ ๋ก๊ทธ ์ถ๋ ฅ์ด ์๋ก ์ฌ๋ผ๊ฐ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
sasl_auxprop.c
Outdated
|
|
||
| acl_thread_running = true; | ||
| while (!acl_thread_stopreq) { | ||
| ts.tv_sec += REFRESH_PERIOD; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๊ธฐ์กด ์ฝ๋์ ๋ํ ์ฝ๋ฉํธ์ ๋๋ค.
- ๋ ๋ฒ์งธ loop ๋ถํฐ๋ ts ๊ฐ์ ๋ค์ ๊ตฌํด์ผ ํ์ง ์๋ ์ง ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ด๊ธฐ์๋ init ์์ ์ ๋๋ค์ผ๋ก ๊ตฌํ ์คํ์ ์ ๊ธฐ์ค์ผ๋ก ๋งค์ผ ๊ฐ์ ์๊ฐ์ refresh ์์๋๋ ๊ฒ์ ์๋ํ๋๋ฐ,
reload auth ๋๋ config auth_group์ฒ๋ผ ์์ ์์ ์ refreshํ๋ ๋ก์ง์ด ์ถ๊ฐ๋๋ฉด์ ๋ง์ง ์๊ฒ ๋์์ต๋๋ค.
๋งค loop๋ง๋ค ts ๊ฐ์ ๋ค์ ๊ณ์ฐํ๋ ํํ๋ก ์์ ํ๊ฒ ์ต๋๋ค.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@namsic
์๋์ ๋ํ ์์ ์ ๋ณ๋ PR๋ก ์ฌ๋ ค์ฃผ์ธ์.
auth group ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ ๋ฐ์ํ์ง ์์ ์์ ์ด๊ณ ,
์๋ ์์ ์ ๊ธฐ์กด ์ฝ๋์ ๋ํ ์์ ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
clock_gettime(CLOCK_REALTIME, &ts);๊ทธ๋ฆฌ๊ณ , loop ๋ค์ด์ค์ง ์ ์ random ๋ฐฉ์์ tv_sec ์ค์ ํ๋ ์๋ฏธ๋ ์ด๋ ค์ผ ๋์ง ์๋ ์ง ?
clock_gettime(CLOCK_REALTIME, &ts);
srand(ts.tv_sec);
ts.tv_sec += rand() % REFRESH_PERIOD;There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๊ทธ๋ฆฌ๊ณ , loop ๋ค์ด์ค์ง ์ ์ random ๋ฐฉ์์ tv_sec ์ค์ ํ๋ ์๋ฏธ๋ ์ด๋ ค์ผ ๋์ง ์๋ ์ง ?
๊ธฐ์กด์๋ ์ด๊ธฐ ๊ตฌ๋ ์ random offset์ ์ฃผ์ด ์์ ์ ํฉ์ด๋๊ณ ๊ทธ ๋ค๋ก๋ ๊ณ ์ ์ฃผ๊ธฐ(REFRESH_PERIOD)๋ง๋ค ๊ฐ์ ๊ฐฑ์ ํ๋ ํํ์๊ณ ,
๋ค๋ฅธ ์กฐ์์ด ์์ผ๋ฉด ํ๋ฃจ ํ ๋ฒ ์กฐํ ์์
์ ์ํํฉ๋๋ค.
๋งค loop๋ง๋ค random offset ์ค์ ํ๋๋ก ํ๋ฉด (reload ์์
์ฌ๋ถ์ ๋ฌด๊ดํ๊ฒ) REFRESH_PERIOD 24h ๊ฐ์ ์๋ฏธ๊ฐ ์๋์ ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ค.
- ๊ฐฑ์ ์ฃผ๊ธฐ๋ ๋งค ๋ฒ ๋๋ค์ด๋ฉฐ, ์ต๋ 24H ์ด๋ด์ ๊ฐฑ์ ๋ณด์ฅ
- ํ๋ฅ ์ ๋ฐ๋ผ 24H ๋์ N๋ฒ ๊ฐฑ์ ์์ ์ํ
๋งค ๋ฒ rand ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ ๊น์?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๊ธฐ์กด ๋์์ ์๋์ ๊ฐ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ wait duration : (rand() % REFRESH_PERIOD) + REFRESH_PERIOD
- ๊ทธ ์ดํ wait duration : REFRESH_PERIOD
์ด๋ค ์ฝ๋ฉํธ ์์ด ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด์
(rand() % REFRESH_PERIOD) ์ฝ๋๊ฐ ์๋ ๊ฒ์ ํ์ธํ์๋ ์ง๋ฅผ ์ฝ๋ฉํธ๋ก ๋ฌผ์ ๊ฒ์
๋๋ค.
ํน์ ์ค์๋ก ํ์ธํ์ง ๋ชปํ์๊น ๋ด ๋ฌผ์ ๊ฒ์
๋๋ค.
- ๋ชจ๋ wait duration : REFRESH_PERIOD
๊ธฐ์กด ๋์๋๋ก ํด๋ ๋๊ณ , ๋งค๋ฒ rand ํด๋ ๋ฉ๋๋ค.
ํน์ ์๋๋ก ๊ตฌํํ ๋ถ๋ถ์ ๋ณ๊ฒฝํ๋ค๋ฉด, ์ด๋ ๊ฒ ๋ณ๊ฒฝํ๋ค๋ ์ฝ๋ฉํธ๋ง ๋จ๊ฒจ๋๋ฉด ๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก, REFRESH_PERIOD๋ฅผ 12์๊ฐ์ผ๋ก ์ค์ด๊ณ , ์๋ ๋ฐฉ์์ผ๋ก ๋งค๋ฒ randํ๋ฉด ์ ๋นํด ๋ณด์ ๋๋ค.
- (rand() % REFRESH_PERIOD) + REFRESH_PERIOD
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๋งค๋ฒ rand ๋ฐฉ์์ผ๋ก ํ ๊ฒฝ์ฐ,
์ด๋ค rand ๋ฐฉ์์ผ๋ก ํ๋ฉด ์ ๋นํ ์ง๋ ์ค์ค๋ก ๊ฒฐ์ ํ ์ ์๋ค๊ณ ๋ด
๋๋ค.
sasl_auxprop.c
Outdated
| change_acl_group = false; | ||
| pthread_mutex_unlock(&acl_thread_lock); | ||
| if (ret == 0) { | ||
| mc_logger->log(EXTENSION_LOG_INFO, NULL, "SECURITY_EVENT ACL group changed to: %s\n", g_group_name); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
๋ก๊ทธ ์ถ๋ ฅ์ validate_new_acl_group() ์์ ๋ฃ๋ ๊ฒ์ด ์ด๋ค์ง ?
sasl_auxprop.c
Outdated
| #define PROPNAME_MAXLEN 32 | ||
| // 16: buffer for "/arcus_acl", "/" separator, "\0" terminator, etc. | ||
| #define TABLE_KEY_LEN 16 + GROUP_MAXLEN + USERNAME_MAXLEN + PROPNAME_MAXLEN | ||
| #define VALUE_MAXLEN 8192 /* from Cyrus SASL's sasldb auxprop plugin */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์๋ ์ฉ์ด๊ฐ ์ด๋ค์ง?
- SASL_KEY_MAXLEN
- SASL_VALUE_MAXLEN
d4cb819 to
8a0fbb4
Compare
8a0fbb4 to
36f02b1
Compare
๐ Related Issue
โจ๏ธ What I did
config auth_group๋ช ๋ น์ ํตํด acl group์ ์กฐํ/๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค.END์๋ตํฉ๋๋ค. (์ค์ ๋ณ๊ฒฝ ์์ ์ ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ๋ฌด๊ด)