Bot Framework 보안 지침Bot Framework security guidelines

적용 대상: SDK v4APPLIES TO: SDK v4

봇은 금융 서비스, 소매, 여행 등과 같은 주요 비즈니스 영역에서 점점 더 많이 사용되고 있습니다.Bots are more and more prevalent in key business areas like financial services, retail, travel, and so on. 봇은 신용 카드, SSN, 은행 계좌 및 기타 개인 정보와 같은 매우 중요한 데이터를 수집할 수 있습니다.A bot might collect very sensitive data such as credit cards, SSN, bank accounts, and other personal information. 따라서 봇을 보호하고 일반적인 위협 및 취약성으로부터 보호하는 것이 중요합니다.So, it is important that bots are secure and protect against common threats and vulnerabilities.

봇의 보안을 개선하기 위해 몇 가지 표준 예방 조치를 취할 수 있습니다.You can take some standard preventative measures to improve your bot's security. 일부 보안 조치는 다른 소프트웨어 시스템에서 사용되는 것과 비슷하지만 일부는 Bot Framework 관련됩니다.Some security measures are similar to the ones used in other software systems, while some are specific to the Bot Framework. 후자의 경우 Azure 보안 벤치마크를 참조하세요.For the latter, refer to the Azure Security Benchmark. 벤치마크는 Azure에서 클라우드 솔루션을 보호하는 방법에 대한 권장 사항을 제공합니다.The benchmark provides recommendations on how you can secure your cloud solutions on Azure.

간결한 보안 문제Security issues in a nutshell

이 문서에서는 보안 문제를 두 가지 범주로 그룹화합니다.This article groups security issues into 2 categories:

  • 위협: 누군가가 스푸핑, 변조, 정보 공개, 서비스 거부 등과 같은 봇을 손상시키는 데 사용할 수 있는 전술입니다.Threats: The tactics someone might use to compromise your bot, such as spoofing, tampering, disclosing information, denial of service, and so on.

  • 취약성: 봇 또는 봇의 관리가 버그 또는 lax 보안과 같은 전술에 취약할 수 있는 방법입니다.Vulnerabilities: The ways in which your bot or the management of your bot might be susceptible to such tactics, such as bugs, or lax security.

취약성을 줄이는 것은 위협을 완화하는 좋은 방법이며 취약성을 줄이는 알려진 방법은 개발 및 배포 프로세스에서 보안 검사 지점을 구현하는 것입니다.Reducing your vulnerabilities is a good way to mitigate threats, and a known way to reduce vulnerabilities is to implement security check points in the development and deployment process.

일반적인 보안 지침Common security guidelines

다음 영역에는 모든 애플리케이션에 공통적인 몇 가지 표준 보안 모범 사례가 포함됩니다.The following areas are covered by some standard security best practices common to all applications.

프로토콜 및 암호화Protocols and Encryption

데이터는 전송 중에 변조될 수 있습니다.Data can be tampered with during transmission. 암호화를 제공하여 오용 및 변조 문제를 해결하는 프로토콜이 있습니다.Protocols exist that provide encryption to address problems of misuse and tampering. 이와 관련하여 봇은 암호화된 채널을 통해서만 통신해야 합니다.In this regard, bots should communicate only over encrypted channels. 이렇게 하면 수신자와 발신자가 아닌 다른 사람이 메시지 또는 트랜잭션의 일부를 보기가 어렵습니다.This makes it hard for anyone other than the receiver and sender from seeing any part of the message or transaction.

암호화는 봇 보안을 보장하는 가장 강력한 방법 중 하나이며, 회사는 중요한 데이터를 비개인화하고 암호화하는 조치를 취하여 효율성을 사전에 보장해야 합니다.Encryption is one of the most robust methods of ensuring bot security and companies must proactively guarantee its effectiveness by taking measures to depersonalize and encrypt sensitive data.

유선에서 데이터를 교환하려면 모든 보안 시스템에서 TLS(전송 계층 보안) 또는 SSL(SSL(Secure Sockets Layer))으로 보호되는 암호화된 연결에서 HTTP를 통해 데이터를 전송하는 HTTPS 프로토콜을 사용해야 합니다. To exchange data on the wire any secure system must use the HTTPS protocol, which transfers data over HTTP in encrypted connections protected by Transport Layer Security (TLS) or Secure Sockets Layer (SSL). RFC 2818 - TLS를 통해 HTTP를참조하세요.See also RFC 2818 - HTTP Over TLS.

자체 삭제 메시지Self-destructing messages

일반적으로 메시지 교환이 종료 된 후 또는 일정 시간 후에 더 이상 필요 하지 않은 모든 중요 한 데이터를 영구적으로 삭제 합니다.Permanently delete any sensitive data as soon as it is no longer needed, usually after the message exchange ends, or after a certain amount of time. 여기에는 개인 식별 정보, Id, Pin, 암호, 보안 질문 및 답변이 포함 될 수 있습니다.This can include personally-identifying information, IDs, PINs, passwords, security questions and answers, and so so.

데이터 스토리지Data storage

모범 사례는 특정 시간 동안 안전 하 게 정보를 저장 한 후 나중에 해당 용도를 제공한 후 삭제 하는 것을 호출 합니다.The best practice calls for storing information in a secure state for a certain amount of time and then discarding it later after it served its purpose.

몇 가지 일반적인 보안 기술은 다음과 같습니다.Some common security techniques are listed below.

데이터베이스 방화벽Database firewalls

  • 방화벽은 기본적으로 트래픽에 대 한 액세스를 거부 합니다.Firewalls deny access to traffic by default. 데이터에 액세스 해야 하는 특정 응용 프로그램이 나 웹 서버에서 허용 되는 트래픽만 허용 되어야 합니다.The only traffic allowed should originate from specific applications or web servers that need to access the data.
  • 또한 웹 응용 프로그램 방화벽을 배포 해야 합니다.You should also deploy a web application firewall. 이는 웹 응용 프로그램에서 전달 되는 SQL 삽입 공격과 같은 공격을 사용 하 여 데이터베이스에서 데이터를 탈취 하거나 삭제할 수 있기 때문입니다.This is because attacks such as SQL injection attacks directed at a web application can be used to exfiltrate or delete data from the database.

데이터베이스 강화Database hardening

  • 데이터베이스가 아직 공급 업체에 의해 지원 되는지 확인 하 고, 알려진 취약성을 제거 하기 위해 모든 보안 패치가 설치 된 최신 버전의 데이터베이스를 실행 하 고 있는지 확인 합니다.Make sure that the database is still supported by the vendor, and you are running the latest version of the database with all the security patches installed to remove known vulnerabilities.
  • 필요 하지 않은 기능이 나 서비스를 제거 하거나 사용 하지 않도록 설정 하 고 기본 계정의 암호를 기본값에서 변경 해야 합니다. 필요 하지 않은 모든 기본 계정을 삭제 합니다.Uninstall or disable any features or services that you don't need and make sure you change the passwords of any default accounts from their default values; or better, delete any default accounts that you don't need.
  • 특정 이유로 사용 하지 않도록 설정 해야 하는 경우를 제외 하 고 데이터베이스에서 제공 하는 모든 데이터베이스 보안 제어를 사용 하도록 설정 해야 합니다.Make sure that all the database security controls provided by the database are enabled, unless there is a specific reason for any to be disabled.

중요 한 정보 최소화Minimize valuable information

  • 데이터베이스에 있을 필요가 없는 기밀 정보는 저장 하지 않아야 합니다.Make sure that you are not storing any confidential information that doesn't need to be in the database.
  • 규정 준수 또는 기타 목적을 위해 유지 되는 데이터는 데이터베이스 보안 위협에 취약 한 더 안전한 저장소 (오프 라인)로 이동할 수 있습니다.Data retained for compliance or other purposes can be moved to more secure storage, perhaps offline, which is less susceptible to database security threats.
  • 원래 설치 절차를 수행 하는 동안 서버에서 작성 한 기록 파일을 모두 삭제 해야 합니다.Make sure to delete any history files that are written by a server during the original installation procedure. 설치가 완료 되 면 이러한 파일에 값이 없지만 잠재적으로 악용 될 수 있는 정보를 포함할 수 있습니다.If the installation is successful these files have no value but can contain information that can potentially be exploited.

EducationEducation

Bot 회사와 고객 간의 혁신적인 상호 작용 도구를 제공 합니다.Bots provide an innovative interaction tool between a company and its customers. 그러나 회사 웹 사이트를 조작 하기 위해 백도어를 제공할 수 있습니다.But they could potentially provide a backdoor for tampering with a company's website. 따라서 회사는 개발자가 웹 사이트 보안의 일부로 봇 보안의 중요성을 이해 하 고 있어야 합니다.Therefore, a company must assure that its developers understand the importance of bot security as part of the website security. 또한 사용자의 오류는 문제가 될 수도 있습니다.Moreover, users' errors can be a problem, too. 이렇게 하려면 봇을 안전 하 게 사용할 수 있는 방법에 대 한 교육을 받아야 합니다. 예를 들면 다음과 같습니다.This will require some education on how bots can be used securely, for example:

  • 개발자를 위해 전략은 안전 하 게 bot를 사용 하는 방법에 대 한 내부 학습을 포함 해야 합니다.For the developers, a strategy should include internal training on how to use the bot securely.
  • 고객은 봇과 안전 하 게 상호 작용 하는 방법을 자세히 설명 하는 지침을 제공할 수 있습니다.Customers can be given guidelines detailing how to interact with the bot safely.

봇 특정 보안 지침Bot-specific security guidelines

다음 영역에는 Bot Framework 응용 프로그램에 대 한 몇 가지 표준 보안 모범 사례가 포함 되어 있습니다.The following areas are covered by some standard security best practices for Bot Framework applications. 다음 지침에서는 봇 Framework 모범 사례 보안 조치에 대해 설명 합니다.The following guidelines describe the Bot Framework best practice security measures. 자세한 내용은 보안 및 개인 정보 FAQ를 참조 하세요.For more information, see the Security and Privacy FAQ.

Bot 커넥터 인증Bot Connector authentication

Bot Connector 서비스는 기본적으로 HTTPS를 사용 하 여 봇과 채널 (사용자) 간에 메시지를 교환 합니다.The Bot Connector service natively uses HTTPS to exchange messages between a bot and channels (users). Bot Framework SDK는 기본 봇-채널 인증을 자동화 합니다.the Bot Framework SDK automates basic bot-to-channel authentication for you.

경고

자체 인증 코드를 작성할 경우 모든 보안 절차를 정확하게 구현하는 것이 중요합니다.If you are writing your own authentication code, it is critical that you implement all security procedures correctly. 인증 문서에 설명 된 모든 단계를 구현 하면 공격자가 봇으로 전송 되는 메시지를 읽고 봇을 가장 하는 메시지를 보내고 비밀 키를 도용 하는 위험을 완화할 수 있습니다.By implementing all steps described in the Authentication article, you can mitigate the risk of an attacker being able to read messages that are sent to your bot, send messages that impersonate your bot, and steal secret keys.

사용자 인증User authentication

Azure Bot Service 인증 을 사용하면 Azure Active Directory, GitHub, Uber 등과 같은 다양한 ID 공급자에서 사용자를 인증하고 액세스 토큰 을 가져올 수 있습니다.Azure Bot Service authentication enables you to authenticate users to and get access tokens from a variety of identity providers such as Azure Active Directory, GitHub, Uber and so on. 또한 OAuth2 ID 공급자를 사용자 지정할 수 있도록 인증을 구성할 수 있습니다.You can also configure authentication for a custom OAuth2 identity provider. 이 모든 기능을 통해 지원되는 모든 ID 공급자 및 채널에서 작동하는 인증 코드의 한 부분 을 작성할 수 있습니다.All this enables you to write one piece of authentication code that works across all supported identity providers and channels. 이러한 기능을 활용하려면 다음 단계를 수행해야 합니다.To utilize these capabilities you need to perform the following steps:

  1. ID 공급자를 사용하여 애플리케이션 등록에 대한 세부 정보가 포함된 봇에서 정적으로 settings를 구성합니다.Statically configure settings on your bot that contains the details of your application registration with an identity provider.
  2. 이전 단계에서 제공한 애플리케이션 정보에 의해 지원되는 OAuthCard를 사용하여 사용자를로그인합니다.Use an OAuthCard, backed by the application information you supplied in the previous step, to sign-in a user.
  3. Azure Bot Service API 를 통해 액세스 토큰을 검색합니다.Retrieve access tokens through Azure Bot Service API. 인증 된 사용자가 로그인 상태를 유지할 수 있는 기간에 시간 제한을 설정 하는 것이 좋습니다.A good practice is to place a time limit on how long an authenticated user can stay logged in.

자세한 내용은 사용자 인증 문서를 참조 하세요.For more information, see the User authentication article.

웹 채팅Web Chat

웹 채팅 컨트롤을 사용 하는 경우 가장 및 id 스푸핑에 대 한 몇 가지 중요 한 보안 고려 사항을 염두에 두어야 합니다.When you use the Web Chat control you must keep in mind some important security considerations about impersonation and identity spoofing. 자세한 내용은 직접 줄 고급 인증을 참조 하세요.For more information, see Direct Line enhanced authentication.

추가 정보Additional information