<project xmlns="http://maven.apache.org/POM/4.0.0"

             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

             <modelVersion>4.0.0</modelVersion>

             <parent>

                           <groupId>org.springframework.boot</groupId>

                           <artifactId>spring-boot-starter-parent</artifactId>

                           <version>2.5.7</version>

                           <relativePath/>

             </parent>

             <groupId>ap-drwb</groupId>

             <artifactId>ap-drwb</artifactId>

             <version>1.0.0</version>

             <packaging>war</packaging>

             <name>drwb</name>

             <description>drwb</description>


 

             <properties>

                           <java.version>17</java.version>

                           <spring.version>5.3.13</spring.version>

                           <spring.boot.version>2.5.7</spring.boot.version>

                           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

             </properties>


 

             <repositories>

                           <repository>

                                        <id>cenrtal</id>

                                        <url>https://repo1.maven.org/maven2/</url>

                           </repository>

                           <repository>

                                        <id>redhat-ga</id>

                                        <url>https://maven.repository.redhat.com/ga/</url>

                           </repository>

                           <repository>

                                        <id>mulesoft-ga</id>

                                        <url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>

                           </repository>

                           <!--

                           <repository>

                                        <id>mergyaPub</id>

                                        <url>https://nexus.emergya.es/nexus/content/repositories/public/</url>

                           </repository>-->

             </repositories>


 

             <dependencies>

                           <!-- marked the embedded servlet container as provided --> 

                           <dependency>

                               <groupId>javax.servlet</groupId>

                               <artifactId>javax.servlet-api</artifactId>

                               <scope>provided</scope>

                           </dependency>

                           <dependency>

                               <groupId>org.bouncycastle</groupId>

                               <artifactId>bcmail-jdk14</artifactId>

                               <version>1.38</version>

                           </dependency>

                           <dependency>

                               <groupId>org.bouncycastle</groupId>

                               <artifactId>bcprov-jdk14</artifactId>

                               <version>1.38</version>

                           </dependency>

                           <dependency>

                               <groupId>org.bouncycastle</groupId>

                               <artifactId>bctsp-jdk14</artifactId>

                               <version>1.38</version>

                           </dependency>

                           <dependency>

                               <groupId>org.codehaus.castor</groupId>

                               <artifactId>castor</artifactId>

                               <version>1.2</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-beanutils</groupId>

                               <artifactId>commons-beanutils</artifactId>

                               <version>1.8.3</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-codec</groupId>

                               <artifactId>commons-codec</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>commons-collections</groupId>

                               <artifactId>commons-collections</artifactId>

                               <version>3.2</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-dbcp</groupId>

                               <artifactId>commons-dbcp</artifactId>

                               <version>1.4</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-digester</groupId>

                               <artifactId>commons-digester</artifactId>

                               <version>2.1</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-lang</groupId>

                               <artifactId>commons-lang</artifactId>

                               <version>2.4</version>

                           </dependency>

                           <dependency>

                               <groupId>commons-logging</groupId>

                               <artifactId>commons-logging</artifactId>

                               <version>1.1.1</version>

                           </dependency>

                           <dependency>

                               <groupId>dom4j</groupId>

                               <artifactId>dom4j</artifactId>

                               <version>1.6.1</version>

                           </dependency>

                           <dependency>

                               <groupId>org.eclipse.jdt</groupId>

                               <artifactId>ecj</artifactId>

                               <version>3.18.0</version>

                           </dependency>

                           <dependency>

                               <groupId>net.sf.ezmorph</groupId>

                               <artifactId>ezmorph</artifactId>

                               <version>1.0.4</version>

                           </dependency>

                           <dependency>

                               <groupId>com.zaxxer</groupId>

                               <artifactId>HikariCP</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.core</groupId>

                               <artifactId>jackson-annotations</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.core</groupId>

                               <artifactId>jackson-core</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.core</groupId>

                               <artifactId>jackson-databind</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.datatype</groupId>

                               <artifactId>jackson-datatype-jdk8</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.datatype</groupId>

                               <artifactId>jackson-datatype-jsr310</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.fasterxml.jackson.module</groupId>

                               <artifactId>jackson-module-parameter-names</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>jakarta.annotation</groupId>

                               <artifactId>jakarta.annotation-api</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.jasypt</groupId>

                               <artifactId>jasypt</artifactId>

                               <version>1.9.3</version>

                           </dependency>

                           <dependency>

                               <groupId>com.sun.mail</groupId>

                               <artifactId>javax.mail</artifactId>

                               <version>1.5.2</version>

                           </dependency>

                           <dependency>

                               <groupId>jfree</groupId>

                               <artifactId>jcommon</artifactId>

                               <version>1.0.15</version>

                           </dependency>

                           <dependency>

                               <groupId>eclipse</groupId>

                               <artifactId>jdtcore</artifactId>

                               <version>3.1.0</version>

                           </dependency>

                           <dependency>

                               <groupId>jfree</groupId>

                               <artifactId>jfreechart</artifactId>

                               <version>1.0.12</version>

                           </dependency>

                           <dependency>

                               <groupId>net.sf.json-lib</groupId>

                               <artifactId>json-lib-ext-spring</artifactId>

                               <version>1.0.2</version>

                           </dependency>

                           <dependency>

                               <groupId>org.slf4j</groupId>

                               <artifactId>jul-to-slf4j</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.logging.log4j</groupId>

                               <artifactId>log4j-api</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>log4j</groupId>

                               <artifactId>log4j</artifactId>

                               <version>1.2.14</version>

                           </dependency>

                           <dependency>

                               <groupId>org.bgee.log4jdbc-log4j2</groupId>

                               <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>

                               <version>1.16</version>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.logging.log4j</groupId>

                               <artifactId>log4j-to-slf4j</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>ch.qos.logback</groupId>

                               <artifactId>logback-classic</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>ch.qos.logback</groupId>

                               <artifactId>logback-core</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.navercorp.lucy</groupId>

                               <artifactId>lucy-xss</artifactId>

                               <version>1.6.3</version>

                           </dependency>

                           <dependency>

                               <groupId>org.mybatis</groupId>

                               <artifactId>mybatis</artifactId>

                               <version>3.5.14</version>

                           </dependency>

                           <dependency>

                               <groupId>org.mybatis</groupId>

                               <artifactId>mybatis-spring</artifactId>

                               <version>3.0.3</version>

                           </dependency>

                           <dependency>

                               <groupId>org.mybatis.spring.boot</groupId>

                               <artifactId>mybatis-spring-boot-starter</artifactId>

                               <version>3.0.3</version>

                           </dependency>

                           <dependency>

                               <groupId>javax.servlet</groupId>

                               <artifactId>jstl</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>javax.activation</groupId>

                               <artifactId>activation</artifactId>

                               <version>1.1.1</version>

                           </dependency>

                           <!-- OJDBC-->

                           <dependency>

                               <groupId>com.oracle.database.jdbc</groupId>

                               <artifactId>ojdbc11</artifactId>

                               <version>21.1.0.0</version>

                           </dependency>

                           <dependency>

                               <groupId>com.mchange</groupId>

                               <artifactId>mchange-commons-java</artifactId>

                               <version>0.2.15</version>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.poi</groupId>

                               <artifactId>poi</artifactId>

                               <version>3.9</version>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.poi</groupId>

                               <artifactId>poi-ooxml</artifactId>

                               <version>3.9</version>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.poi</groupId>

                               <artifactId>poi-ooxml-schemas</artifactId>

                               <version>3.9</version>

                           </dependency>

                           <dependency>

                               <groupId>org.quartz-scheduler</groupId>

                               <artifactId>quartz</artifactId>

                               <version>2.3.2</version>

                           </dependency>

                           <dependency>

                               <groupId>org.yaml</groupId>

                               <artifactId>snakeyaml</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.slf4j</groupId>

                               <artifactId>slf4j-api</artifactId>

                           </dependency><!--

                           <dependency>

                               <groupId>org.springframework.boot</groupId>

                               <artifactId>spring-boot</artifactId>

                               <version>${spring.boot.version}</version>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework.boot</groupId>

                               <artifactId>spring-boot-autoconfigure</artifactId>

                               <version>${spring.boot.version}</version>

                           </dependency>-->

                 <dependency> 

                     <groupId>org.springframework.boot</groupId> 

                     <artifactId>spring-boot-starter-tomcat</artifactId>

                     <scope>provided</scope> 

                 </dependency>

                 <dependency>  

                                        <groupId>org.springframework.boot</groupId>  

                                        <artifactId>spring-boot-starter-web</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework</groupId>

                               <artifactId>spring-web</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework</groupId>

                               <artifactId>spring-jdbc</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework</groupId>

                               <artifactId>spring-context-support</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework</groupId>

                               <artifactId>spring-expression</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework</groupId>

                               <artifactId>spring-webmvc</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework.security</groupId>

                               <artifactId>spring-security-web</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.springframework.security</groupId>

                               <artifactId>spring-security-config</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>org.apache.tomcat.embed</groupId>

                               <artifactId>tomcat-embed-jasper</artifactId>

                           </dependency>

                           <dependency>

                               <groupId>com.lowagie</groupId>

                               <artifactId>itext</artifactId>

                         <version>2.1.7</version>

                         <scope>system</scope>

                               <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/itext-2.1.7.jar</systemPath>

                           </dependency>

                           <dependency>

                               <groupId>net.sf.jasperreports</groupId>

                               <artifactId>jasperreports</artifactId>

                               <version>5.2.0</version>

                               <scope>system</scope>

                               <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/jasperreports-5.2.0.jar</systemPath>

                           </dependency>

                           <dependency>

                               <groupId>commons-email</groupId>

                               <artifactId>commons-email</artifactId>

                               <version>1.4</version>

                               <scope>system</scope>

                               <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/commons-email-1.4.jar</systemPath>

                           </dependency>

             </dependencies>


 

             <build>

                           <plugins>

                                        <plugin>

                                 <groupId>org.springframework.boot</groupId>

                                 <artifactId>spring-boot-maven-plugin</artifactId>

                               </plugin>

                           </plugins>

             </build>

</project>

Bastion Host는 네트워크 안에서 특정 서비스에 대한 접근을 제어하고 모니터링하는 보안 시스템입니다. 이 블로그에서는 Bastion Host의 개념과 역할, 장점, 설정 방법, 그리고 보안적 측면에 대해 알아보겠습니다. 이 강력한 보안 장치를 통해 내부 시스템의 안전성을 높이고 외부 침입으로부터 보호하는 방법을 살펴보도록 하겠습니다.

 

 

1. 주요역할

보호된 접근 경로 제공: Bastion Host는 외부 사용자들이 내부 시스템에 직접 접근하는 것을 막기 위해 사용됩니다. 외부 사용자들은 Bastion Host를 통해 먼저 접속하고, 그 이후에 필요한 인증과 권한 부여를 거쳐서 내부 시스템으로의 접근이 허용됩니다. 이를 통해 내부 시스템에 대한 보안이 강화됩니다.

외부 침입 방지: Bastion Host를 통해 내부 시스템에 직접적으로 연결되지 않으므로, 외부 공격자들의 공격 대상이 줄어듭니다. Bastion Host는 외부에서 내부로의 트래픽을 감시하고 제어함으로써, 외부 침입을 예방하거나 최소화할 수 있습니다.

모니터링과 로그 기록: Bastion Host는 외부 사용자들의 접속 시도를 모니터링하고, 이에 대한 로그를 기록합니다. 이를 통해 잠재적인 보안 위협이나 악의적인 시도를 식별하고 대응할 수 있습니다.

다단계 인증(Multi-Factor Authentication, MFA) 지원: Bastion Host는 다단계 인증을 통해 추가적인 보안 층을 제공할 수 있습니다. 외부 사용자가 Bastion Host에 접속할 때, 추가적인 인증 요소를 입력하도록 함으로써 보안성을 더욱 강화할 수 있습니다.

보안 정책 적용: Bastion Host를 통해 접근 권한을 관리하고, 정책에 맞지 않는 접근을 차단할 수 있습니다. 필요에 따라 특정 사용자들에게만 접근 권한을 부여하거나 특정 서비스에 대한 접근을 제한할 수 있습니다.

Bastion Host는 주로 SSH(Secure Shell)를 통해 접근할 수 있으며, 보통 시스템 관리자나 보안 담당자들이 접속할 수 있는 권한을 가지고 있습니다. 이를 통해 보안 강화와 관리가 용이해지며, 내부 시스템에 대한 안전한 접근을 보장할 수 있습니다.

 

2. Bastion Host의 위치

Bastion Host는 주로 방화벽 뒤에 위치하며, 외부 네트워크와 내부 네트워크 사이에 위치합니다. 이 위치로 인해 외부 사용자들이 내부 시스템에 직접 접근하는 것을 막고, 보호된 접근 경로를 통해 내부 시스템에 접근할 수 있도록 합니다.

일반적으로 네트워크 구성에서 Bastion Host는 DMZ(데모ilit리즈 영역) 라고 불리는 영역에 배치됩니다. DMZ는 내부 네트워크와 외부 네트워크 사이에 있는 보안 구역으로서, 외부에서 내부로 직접 접근할 수 없도록 막아주는 역할을 합니다. Bastion Host는 이 DMZ 영역에 배치되어 있으며, 외부 사용자들이 Bastion Host를 통해서만 내부 시스템으로 접근할 수 있도록 되어 있습니다.

Bastion Host를 DMZ에 위치시킴으로써 다음과 같은 장점을 얻을 수 있습니다:

외부에서 내부 시스템으로의 직접 접근을 차단하여 내부 시스템에 대한 추가적인 보호를 제공합니다.
외부 침입자들이 바로 내부 시스템에 접근하는 것을 방지하고, Bastion Host를 통해 접근 권한을 관리할 수 있습니다.
DMZ는 외부 네트워크와 내부 네트워크 사이에 있는 중간 영역이므로, 내부 시스템의 보안에 대한 중요한 보호층이 됩니다.
따라서 Bastion Host는 DMZ에 위치함으로써 내부 시스템의 보안을 강화하고, 외부로부터의 침입을 막는 중요한 보안 장치로 사용됩니다.

 

3. 대표적인 사례


Bastion Host는 다양한 환경에서 보안을 강화하고, 외부에서 내부 시스템에 안전한 접근을 제공하는데 사용됩니다. 대표적인 사례로는 다음과 같은 상황들이 있습니다:

기업 내부 시스템 접근 제어: 기업은 보통 내부 네트워크에 중요한 데이터와 시스템을 보유하고 있습니다. 외부 사용자나 직원들이 내부 시스템에 직접 접근하는 것을 막기 위해 Bastion Host를 사용합니다. 외부에서는 Bastion Host에만 접속 가능하고, Bastion Host를 통해 인증과 권한 확인 후에 내부 시스템으로 접근이 가능하도록 설정합니다.

클라우드 환경 보안: 클라우드 서비스를 사용하는 기업들은 인터넷을 통해 클라우드 인프라에 접근해야 합니다. 이때, 클라우드 환경에 Bastion Host를 배치하여 외부에서 직접 클라우드 리소스에 접근하는 것을 방지합니다. 클라우드 리소스에 접근하려는 사용자는 먼저 Bastion Host에 접속한 후, 인증과 권한 부여를 거쳐서 클라우드 리소스에 접근할 수 있습니다.

리모트 워킹 보안: 원격으로 작업하는 직원들은 인터넷을 통해 회사의 리소스에 접근해야 할 수 있습니다. 이때, 직원들에게 직접적인 접근 권한을 주는 것보다 Bastion Host를 통해 접속하도록 하여 보안을 강화할 수 있습니다. 직원들은 먼저 Bastion Host에 접속한 후, 인증 절차를 거쳐 회사의 리소스에 접근할 수 있습니다.

외부 공급자 접근 제어: 외부 공급자나 업무 파트너들이 내부 시스템에 접근해야 할 필요가 있을 수 있습니다. 이때, 외부 공급자들이 직접 내부 시스템에 접근하는 것을 막고, Bastion Host를 통해 안전하게 접속하도록 합니다. 이를 통해 외부 공급자와의 접근을 관리하고 보안을 유지할 수 있습니다.

이 외에도 Bastion Host는 보안 강화와 접근 제어를 필요로 하는 다양한 상황에서 사용됩니다. Bastion Host의 주요 목적은 외부에서 내부로의 접근을 제한하고, 안전한 접근 경로를 제공하여 내부 시스템을 보호하는 것입니다. 따라서 보안이 중요한 시스템이나 네트워크에서 많이 사용되고 있습니다.

 

4.장점 및 단점

장점:

보안 강화: Bastion Host를 통해 외부 사용자들이 직접 내부 시스템에 접근하는 것을 막을 수 있습니다. 외부 사용자들은 먼저 Bastion Host에 접속한 후, 추가적인 인증과 권한 부여를 거쳐서 내부 시스템에 접근할 수 있도록 됩니다. 이를 통해 내부 시스템의 보안을 강화할 수 있습니다.

접근 제어: Bastion Host는 내부 시스템으로의 접근을 엄격히 제어할 수 있습니다. 필요한 사용자들만 Bastion Host에 접속하여 내부 시스템으로의 접근이 허용되기 때문에 무단 접근을 방지할 수 있습니다.

모니터링과 로그 기록: Bastion Host를 통해 외부 사용자들의 접속 시도를 모니터링하고, 이에 대한 로그를 기록할 수 있습니다. 이를 통해 잠재적인 보안 위협이나 악의적인 시도를 식별하고 대응할 수 있습니다.

다단계 인증(Multi-Factor Authentication, MFA) 지원: Bastion Host를 통해 다단계 인증을 사용할 수 있습니다. 추가적인 인증 요소를 요구하여 보안성을 더욱 강화할 수 있습니다.

단점:

단일 장애 지점(Single Point of Failure): Bastion Host 자체가 단일 장애 지점이 될 수 있습니다. 만약 Bastion Host가 다운되면 외부에서 내부 시스템으로의 접근이 불가능해지는 문제가 발생할 수 있습니다. 따라서 Bastion Host의 가용성을 보장하기 위해 고려해야 합니다.

추가적인 설정과 관리 필요: Bastion Host를 구성하고 관리하는 것은 추가적인 작업을 필요로 합니다. Bastion Host에 대한 보안 정책과 접근 권한을 관리하고, 시스템을 업데이트하고 유지보수하는데 비용과 시간이 소요될 수 있습니다.

복잡성 증가: Bastion Host를 도입하면 시스템 구성이 복잡해질 수 있습니다. Bastion Host를 포함하여 모든 구성 요소가 잘 동작하도록 관리해야 하며, 이로 인해 복잡성이 증가할 수 있습니다.

요약하자면, Bastion Host는 보안 강화와 접근 제어에 매우 유용한 도구이지만, 단일 장애 지점과 추가적인 설정과 관리 부담을 고려해야 하는 단점이 있습니다. 따라서 Bastion Host를 도입하기 전에 조직의 요구사항과 환경을 고려하여 적절하게 구성해야 합니다.

 

5.Bastion Host와 VPN(Virtual Private Network)의 차이점

Bastion Host와 VPN(Virtual Private Network)은 둘 다 보안을 강화하고, 외부로부터의 접근을 제어하는데 사용되는 보안 기술이지만, 기능과 용도에서 차이가 있습니다.

Bastion Host의 특징:

접근 제어 및 보호: Bastion Host는 외부 사용자들이 내부 시스템에 직접 접근하는 것을 막고, 보호된 접근 경로를 제공합니다. 외부 사용자들은 먼저 Bastion Host에 접속한 후, 추가적인 인증과 권한 부여를 거쳐서 내부 시스템으로의 접근이 허용됩니다.

단일 포인트로의 접근: Bastion Host는 단일 포인트로서, 외부에서 내부 시스템으로 접근하는 유일한 경로입니다. 따라서 단일 장애 지점(Single Point of Failure)이 될 수 있습니다.

다단계 인증(MFA) 지원: Bastion Host를 통해 다단계 인증을 사용할 수 있습니다. 추가적인 인증 요소를 요구하여 보안성을 더욱 강화할 수 있습니다.

VPN의 특징:

원격 네트워크 연결: VPN은 원격 사용자나 지사(브랜치 오피스)와 같이 다른 위치에 있는 네트워크를 안전하게 연결하는 기술입니다. 이를 통해 원격 사용자나 지사에서도 회사의 내부 네트워크에 접근할 수 있게 됩니다.

암호화된 터널: VPN은 인터넷 상의 공개적인 네트워크를 암호화된 터널로 만들어서 데이터의 안전한 전송을 보장합니다. 이로 인해 데이터의 기밀성과 무결성을 보호합니다.

사용자-사이트 VPN과 사이트-사이트 VPN: 사용자-사이트 VPN은 개별 사용자가 회사의 내부 네트워크에 접근하는 경우에 사용되며, 사이트-사이트 VPN은 두 개의 네트워크를 안전하게 연결하는 경우에 사용됩니다.

요약하면, Bastion Host는 외부 사용자들이 내부 시스템에 접근하는 것을 제어하고 보호하는데 사용되며, 단일 포인트로서의 한계가 있습니다. 반면에 VPN은 원격 네트워크를 안전하게 연결하여 원격 사용자나 지사에서도 내부 네트워크에 접근할 수 있게 하며, 데이터의 안전한 전송을 보장합니다. 두 기술은 각자의 용도와 특징에 따라 적절하게 사용됩니다.

사회책임투자 (Social Responsible Investing)

 

사회책임투자란 투자 시 재무적 요소외에도 다양하고 복잡한 비재무적 요소인 환경(Environment), 사회(Social), 지배구조 (Governance)를 모두 고려하고 철저한 분석을 실시하여 투자함으로써 공공선과 경제적인 수익을 함께 이루고자 하는 투자 과정입니다. 기존의 투자이론은 기대위험과 기대수익을 중심으로 투자의사결정을 수행하였지만, SRI에서는 투자의 경제적, 사회적, 환경적인 이득을 함께 고려한다는 점에서 차이가 있습니다.

 

주요 사회적 책임투자 방법은 아래와 같습니다.

  1. 스크리닝(Social Screening): 사회적 또는 환경적인 기준에 따라 해당되는 회사의 주식 또는 채권 등을 투자 포트폴리오에 넣거나 제외시키는 투자전략
  2. 주주권리보호(Shareholder Advocacy): 특정 기업의 주식을 보유하고 이를 이용하여 그 기업의 업무관행을 보다 사회적으로 책임 있는 방향으로 개선하도록 유도하는 투자전략
  3. 지역공동체 투자: 경제적으로 불이익을 받는 계층 또는 지역공동체가 필요로 한 기회나 자원을 제공하는 투자 방법

일반적으로 스크리닝 방법이 가장 널리 쓰이고 있습니다.

 

사회책임투자는 일반적으로 대형 투자기관(연금기금, 뮤츄얼 펀드 포함), 보험회사, 노조, 재단, 종교단체, 지역공동체개발 금융기관을 중심으로 이루어 지고 있습니다. 투자자는 ESG 측면에서의 평가를 수행하여 투자 의사결정에 사용하고 있으며, 평가에 필요한 자료는 직접 수집하기도 하나 자문사를 통해 ESG 평가를 수행하는 경우가 일반적입니다.

 

국내의 경우 사학연금은 2023년 현재 4000억 규모의 펀드를 운용사를 선정해 운용하고 있으며 ‘위탁운용사 ESG 추진 활동의 적정성’ 평가를 수행하여 사회적책임투자를 실천하고 있습니다.

'기타(분류없음)' 카테고리의 다른 글

[COP27 Review] - 샤름엘셰이크 이행계획이란?  (0) 2022.11.23

JavaScript는 현재 가장 인기 있는 웹 프로그래밍 언어 중 하나입니다. JavaScript는 프론트엔드, 백엔드 및 모바일 개발에서 널리 사용됩니다. 따라서 JavaScript를 배우는 것은 웹 개발자로서 중요한 기술입니다.


JavaScript를 배우기 위해서는 TypeScript를 배우는 것이 좋습니다. TypeScript는 JavaScript의 상위 집합 언어로, JavaScript에 강력한 정적 타입 검사 기능을 추가합니다. TypeScript는 프로그래밍 언어를 배우는 초보자에게도 친숙하며, 코드를 작성하는 것을 더 쉽고 안전하게 만들어 줍니다.


따라서 TypeScript를 배우는 것은 JavaScript를 배우는 데 큰 도움이 됩니다. TypeScript를 배우기 위해서는 다음과 같은 자료들을 참고할 수 있습니다.

 

 

TypeScript 핸드북

TypeScript 공식 문서에서 제공하는 핸드북입니다. TypeScript를 처음 배우는 초보자부터 전문가까지 모두에게 유용한 정보를 제공합니다.

링크: https://www.typescriptlang.org/docs/handbook/intro.html

 

TypeScript Deep Dive

TypeScript를 깊이 이해하고 싶은 사람을 위한 서적입니다. 책은 TypeScript의 개념, 기능 및 사용 사례에 대해 자세히 설명합니다.
링크: https://basarat.gitbook.io/typescript/

 

Udemy - Typescript: The Complete Developer's Guide

Udemy에서 제공하는 TypeScript 온라인 강의입니다. 실제 프로젝트를 통해 TypeScript의 모든 기능과 사용 사례를 배울 수 있습니다.
링크: https://www.udemy.com/course/typescript-the-complete-developers-guide/

 

Coursera - Programming Languages, Part A

프린스턴 대학교에서 제공하는 컴퓨터 과학 강의 중 하나입니다. 이 강의는 TypeScript를 비롯한 다양한 프로그래밍 언어를 다루며, 함수형 프로그래밍 및 객체 지향 프로그래밍 등의 개념을 배울 수 있습니다.
링크: https://www.coursera.org/learn/programming-languages

 

 

 

이러한 자료들을 참고하여 TypeScript를 배우면 JavaScript 프로그래밍에 대한 깊은 이해를 얻을 수 있습니다. TypeScript를 배우는 것은 웹 개발자로서 취업에도 큰 도움이 될 것입니다.

 

 

'Web > Javascript' 카테고리의 다른 글

toString()의 사용법과 활용 예시  (0) 2023.02.14
조건문 좀더 편하게 사용하기  (0) 2023.01.13

CHAT GPT는 다양한 자연어 처리 태스크에 사용될 수 있는 강력한 도구입니다. 이를 활용하여 다양한 일을 수행할 수 있습니다. 다음은 CHAT GPT를 활용할 때 유용한 팁 몇 가지입니다.

대화형 인터페이스 구현

CHAT GPT를 사용하여 대화형 인터페이스를 구현할 수 있습니다. 이를 통해 사용자와 자연스러운 대화를 할 수 있으며, 챗봇 등의 어플리케이션에서 유용하게 활용될 수 있습니다.


문장 생성

CHAT GPT를 사용하여 글, 문장 등의 생성 작업을 수행할 수 있습니다. 이를 통해 글을 자동으로 작성하거나, 요약, 감성 분석 등의 작업을 수행할 수 있습니다.


번역

CHAT GPT를 사용하여 다양한 언어로의 번역 작업을 수행할 수 있습니다. 이를 통해 다국어 서비스를 구현할 수 있으며, 다양한 국가의 사용자들을 대상으로 하는 어플리케이션에서 유용하게 활용될 수 있습니다.


지식 검색

CHAT GPT를 사용하여 지식 검색 작업을 수행할 수 있습니다. 이를 통해 검색 엔진 등에서 검색 결과를 생성하거나, 자동으로 문서를 분류하는 등의 작업을 수행할 수 있습니다.


챗봇 학습

CHAT GPT를 사용하여 챗봇을 학습시킬 수 있습니다. 이를 통해 챗봇의 대화 능력을 개선하거나, 새로운 대화 스크립트를 생성할 수 있습니다.


이처럼 CHAT GPT는 다양한 자연어 처리 태스크에 사용될 수 있으며, 이를 활용하여 다양한 일을 수행할 수 있습니다.

'Tools > Etc' 카테고리의 다른 글

CHAT GPT 사용 가이드 #2  (0) 2023.02.27
chatGPT 사용법 #1  (0) 2023.02.24
[무료 에디터] Notepad++  (0) 2022.03.25
[PPT] 쓸만한 디자인 레이아웃  (0) 2018.07.16
SAP JCO Jar File  (4) 2018.01.03

CHAT GPT는 OpenAI에서 개발한 대화형 인공지능 모델로, 다양한 자연어 처리 태스크를 수행할 수 있습니다. 이 가이드 문서에서는 CHAT GPT를 사용하는 방법에 대해 설명하겠습니다.

 

CHAT GPT API 키 발급

 

CHAT GPT를 사용하려면 OpenAI에서 발급하는 API 키가 필요합니다. API 키를 발급받으려면 OpenAI 웹사이트에서 계정을 만들고 API 키를 신청해야 합니다.

 

CHAT GPT 라이브러리 설치

 

CHAT GPT를 사용하기 위해서는 Python 3.x 버전과 OpenAI의 openai 라이브러리가 필요합니다. openai 라이브러리는 pip 명령어를 사용하여 설치할 수 있습니다.

 

pip install openai

 

 

CHAT GPT API 연결

 

API 키 발급과 라이브러리 설치가 완료되면, CHAT GPT API에 연결하여 사용할 수 있습니다. API 연결은 openai.api_key 함수를 사용하여 수행할 수 있습니다.

 

import openai
openai.api_key = "YOUR_API_KEY"

 

CHAT GPT 사용

 

CHAT GPT를 사용하려면 openai.Completion 클래스를 사용하여 입력 문장에 대한 출력 문장을 생성해야 합니다. Completion 클래스의 create() 메서드를 사용하여 입력 문장을 생성하고, 생성된 문장에 대한 출력 문장을 반환받을 수 있습니다.

 

import openai
openai.api_key = "YOUR_API_KEY"

prompt = "Hello, how are you?"
response = openai.Completion.create(engine="davinci", prompt=prompt, max_tokens=50)

print(response["choices"][0]["text"])

위 예제 코드에서는 "Hello, how are you?"라는 입력 문장에 대한 출력 문장을 생성하도록 CHAT GPT API에 요청합니다. engine 매개변수는 CHAT GPT의 엔진을 선택할 수 있으며, max_tokens 매개변수는 출력 문장의 최대 길이를 지정합니다. 출력 문장은 response 변수에서 확인할 수 있습니다.

이처럼 CHAT GPT를 사용하여 입력 문장에 대한 출력 문장을 생성할 수 있습니다. 이외에도 CHAT GPT는 문장 생성, 번역, 요약 등의 다양한 자연어 처리 태스크를 수행할 수 있습니다.

'Tools > Etc' 카테고리의 다른 글

ChatGPT로 무었을 할수 있을까?  (0) 2023.02.27
chatGPT 사용법 #1  (0) 2023.02.24
[무료 에디터] Notepad++  (0) 2022.03.25
[PPT] 쓸만한 디자인 레이아웃  (0) 2018.07.16
SAP JCO Jar File  (4) 2018.01.03

챗 GPT란?

챗 GPT에게 챗GPT가 무었인지 물어보았습니다. 

 

 

그리고 다시 영어로 물어 보았습니다.

 

 

1. chatGPT란?

챗GPT는 질문에 답변을 해주는 AI채팅 서비스 입니다. 

일론 머스크, 와이콤비네이터 창업자인 샘 알트만 등 IT업계의 유명인들이 같이 설립한 세계 최대의 인공지능 연구소 OpenAI에서 개발되었습니다.  기존의 검색 엔진등이 키워드에 대한 결과를 나열해주고 사용자가 세부정보를 찾아 가는 방식과 다르게 챗GPT는 정제된 텍스트로 위에 What is chatGPT에 대한 대답처럼 답변해주는 서비스 입니다. 

 

 

 

2. chatGPT의 사용법

2023년도 2월부터 회원가입하면 무료로 사용할 수 있습니다. 유료 서비스로 챗GPT Plus도 있으며 가격은 20달러(월) 입니다. 현재는 사용자가 너무 많아 좀 느린감이 있습니다.(2023년 2월 기준)

 

    2.1 회원가입 방법

          https://openai.com/blog/chatgpt/

 

ChatGPT: Optimizing Language Models for Dialogue

We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is

openai.com

사이트로 이동 후 TRY CHATGPT 버튼을 클릭하여 로그인/회원가입 페이지로 이동합니다. 

회원 가입 및 로그인을 정상적으로 수행 했다면 아래와 같은 화면을 볼 수 있습니다. 

붉은색 박스의 프롬프트 작성란에 챗GPT와 대화할 수 있는 채팅창에 내용을 입력합니다. 

 

3. chatGPT의  활용 팁

 

  • 질문할 때 명확하고 구체적으로 질문하라.
  • 맞춤법과 문법을 지켜라.
  • 가능한 많은 맥락을 제공하라.
  • 개인정보를 묻거나 공유하지 말아라.
  • 답변을 기다리는 동안 인내심을 가져라.
  • 적절한 언어를 사용하라.
  • 복잡하거나 설명이 필요한 질문은 여러 문장으로 나누어 제시하라.
  • "질문 명확화" 기능을 사용하여 추가 문맥이나 후속 질문을 할 수 있도록 하라.
  • 다양한 주제를 살펴보고 필요한 정보를 찾아보라.
  • 아이디어를 얻기 위해 ChatGPT를 사용하라.
  • 만족스럽지 않은 답변이나 개선점이 있다면 피드백을 제공하라.
  • 대화를 친근하고 예의 바르게 유지하라. 비속어나 부적절한 질문은 피하라.

'Tools > Etc' 카테고리의 다른 글

ChatGPT로 무었을 할수 있을까?  (0) 2023.02.27
CHAT GPT 사용 가이드 #2  (0) 2023.02.27
[무료 에디터] Notepad++  (0) 2022.03.25
[PPT] 쓸만한 디자인 레이아웃  (0) 2018.07.16
SAP JCO Jar File  (4) 2018.01.03

Object.prototype.toString()

 

toString() 은 문자열을 반환하는 object의 대표적인 방법입니다.

obj.toString();

위와 같은 방법으로 많이 사용합니다.

 

객체가 텍스트 값으로 표시되거나 객체가 문자열이 예상되는 방식으로 참조 될 때 자동으로 호출되는 toString() 메서드가 있습니다. 기본적으로 toString() 메서드는 Object에서 비롯된 모든 객체에 상속됩니다.

이 메서드가 사용자 지정 개체에서 재정의되지 않으면 toString()은 "[object type]"을 반환합니다. 여기서 type은 object type입니다.

 

.... 까지는 대부분 알고 있고 사용하고 있는 기능입니다만.

 

 

toString() 편리한 기능이 있습니다. 

10진수의 값의 경우 toString(arg) 매개변수를 이용하여 다른 진수로 변경할 수 있습니다. 

let baseTenInt = 10;
console.log(baseTenInt.toString(2));   // 2진법으로 변환

let bigNum = BigInt(20);
console.log(bigNum.toString(2))    // 2진법으로 변환

 

예를 들자면 16진법으로 변경하여 랜덤 색상을 생성할 수 도 있습니다. 

'#' + Math.floor(Math.random() * 16777215).toString(16);

해당 코드는 16777215를 hex로 표현하면 ffffff가 되므로 해당 코드는 000000부터 ffffff 값을 반환합니다.

 

참고 Link https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

 

Object.prototype.toString() - JavaScript | MDN

The toString() 은 문자열을 반환하는 object의 대표적인 방법이다

developer.mozilla.org

 

'Web > Javascript' 카테고리의 다른 글

TypeScript를 공부 가이드  (0) 2023.02.27
조건문 좀더 편하게 사용하기  (0) 2023.01.13

오라클 설치 후 Password 정책 관련하여 아무런 설정을 하지 않고 시스템을 운영하다 보면 Was에서 사용중인 계정의

패스워드가 만료되어 시스템이 정상동작하지 않는 현상이 나타납니다. 

패스워드가 만료되어 시스템이 동작하지 않는 현상을 예방하기 위해서 패스워드 만료정책을 수정하는 방법을 알아보도록 

하겠습니다.

(물론 보안을 위해서 주기적으로 패스워드를 변경하는것이 바람직 하지만...)

 

 

현재 설정된 패스워드 정책에 대해서 조회 합니다. 

SELECT * FROM DBA_PROFILES A WHERE A.profile = 'DEFAULT' AND A.resource_type = 'PASSWORD';

위 그림과 같이 UNLIMITED로 설정되어 있지 않고 180등의 숫자로 설정되어있으면 해당 일자가 지난뒤 패스워드가 만료되게 됩니다. 

 

 

 

위 그림과 같이 패스워드를 기간제한 없이 사용하도록 수정합니다. 

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

테이블 스페이스를 자동으로 사이즈가 늘어날 수 있도록 autoextend를 on으로 설정 했음에도 해당 오류가 발생하는 경우가 있습니다. 

 

해당 오류가 발생할 때에는 해당 테이블스페이스 데이터 파일의 용량을 확인해야합니다. 

 select file_name, tablespace_name, bytes, autoextensible
   from dba_data_files
  where tablespace_name='MY_TS';

bytes에 해당하는 내용이 용량을 나타내는 항목입니다.

자동 증가옵션을 넣었어도 해당용량이 최대 용량이 존재합니다. 

 

  • OS가 32비트인 경우 최대 16기가 까지 생성 가능
  • OS가 64비트인 경우 최대 32기가 까지 생성 가능

즉 OS의 비트 수에 따른 최대 용량이 존재하여 파일을 더이상 확장할 수 없는 경우 동일한 애러가 발생하게 됩니다. 

 

 

이 경우 데이터 파일을 추가하여 해당 오류를 해결 할 수 있습니다. 

/* 사용법
   ALTER TABLESPACE [TableSpaceName] 
     ADD DATAFILE [DataFileName] 
     SIZE [초기용량] 
     AUTUEXTEND ON NEXT [자동증가 용량] 
     MAXSIZE [최대 용량]
*/     
ALTER TABLESPACE MY_TS ADD DATAFILE '/TS_DATA01.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 32G

 

+ Recent posts