기타
[python] 마크다운 정규표현식 기반 파싱, SQL 쿼리 작성 자동화
이수민
2024. 1. 24. 19:47
import re
# Your markdown content stored as a multi-line string
markdown_content = """
## Identity and Access Management

### 역할
리소스에 대한 보안 액세스 제어 서비스. AWS 계정 내에서 사용자, 그룹, 역할에 대한 권한 정의 및 관리가 가능합니다.
### 동작 방식
1. **사용자 생성**: AWS 계정에는 기본적으로 root 사용자가 있습니다. 이후에는 IAM을 사용하여 추가 사용자를 생성합니다.\n
2. **그룹 생성**: 그룹을 생성하고 여러 사용자를 그룹에 추가하여 동일한 권한을 부여합니다.\n
3. **정책 연결**: IAM 정책을 생성하고 사용자, 그룹, 역할에 연결하여 액세스 권한을 부여합니다.\n
4. **권한 부여 및 거부**: IAM을 사용하여 특정 서비스 또는 리소스에 대한 액세스를 허용하거나 거부할 수 있습니다.\n
5. **임시 보안 자격 증명**: IAM 역할을 사용하여 일시적인 보안 자격 증명을 생성하여 안전한 방식으로 리소스에 액세스할 수 있습니다.\n
### 온프레미스 매칭
온프레미스 환경에서는 대부분의 기업이 디렉터리 서비스(예: Microsoft Active Directory)를 사용하여 사용자 계정 및 권한을 관리합니다.\n
그러나 AWS IAM은 클라우드 환경에 특화되어 있어서 기존의 디렉터리 서비스와는 차이가 있습니다.
### 관리방법(보안 고려사항)
1. **최소 권한 원칙**: 사용자 및 역할에게 최소한의 권한만 부여하여 보안을 강화합니다.\n
2. **IAM 정책 검토**: 정기적으로 IAM 정책을 검토하여 불필요한 권한이나 오남용 가능성을 방지합니다.\n
3. **MFA(Multi-Factor Authentication) 사용**: 보안을 강화하기 위해 사용자들에게 MFA를 강제로 사용하도록 설정합니다.\n
4. **임시 자격 증명 사용**: IAM 역할을 사용하여 필요에 따라 일시적인 보안 자격 증명을 부여하여 보안을 강화합니다.\n
5. **IAM 사용 로그 모니터링**: AWS CloudTrail을 사용하여 IAM의 모든 활동을 모니터링하고 감사합니다.\n
\n
IAM은 AWS에서의 리소스 액세스를 효과적으로 관리하고 보안을 유지하는 핵심 도구입니다. 최소 권한, IAM 정책 검토, MFA 사용과 같은 보안 원칙을 준수하여 안전한 AWS 리소스 관리를 보장해야 합니다.
"""
markdown_content = markdown_content.replace('**', '')
pattern_title = re.compile(r'(?<=## )[\w ]+(?=\n)')
pattern_guide1 = re.compile(r'(?<=### 역할\n\n)[\s\S]*?(?=\n\n###)')
pattern_guide2 = re.compile(r'(?<=### 동작 방식\n\n)[\s\S]*?(?=\n\n###)')
pattern_guide3 = re.compile(r'(?<=### 온프레미스 매칭\n\n)[\s\S]*?(?=\n\n###)')
pattern_guide4 = re.compile(r'(?<=### 관리방법\(보안 고려사항\)\n\n)[\s\S]*?(?=\n\n##|$)') # Note the end-of-string anchor
# Extract content using the patterns
title = pattern_title.search(markdown_content)
guide1 = pattern_guide1.search(markdown_content)
guide2 = pattern_guide2.search(markdown_content)
guide3 = pattern_guide3.search(markdown_content)
guide4 = pattern_guide4.search(markdown_content)
# Check if the patterns found matches and then group and strip
title = title.group().strip() if title else 'Unknown'
guide1 = guide1.group().strip() if guide1 else 'N/A'
guide2 = guide2.group().strip() if guide2 else 'N/A'
guide3 = guide3.group().strip() if guide3 else 'N/A'
guide4 = guide4.group().strip() if guide4 else 'N/A'
sql = f"""
INSERT INTO resource (title, imgpath, tag, guide1, guide2, guide3, guide4)
VALUES ('{title}', "/img/AWS_icon/Arch_Security-Identity-Compliance/Arch_AWS-Secrets-Manager_48.svg", '["데이터 보호"]', '{guide1}', '{guide2}', '{guide3}', '{guide4}');
"""
print(sql)
수작업이 힘들어서 다음과 같이 만들었었다.