четверг, 27 февраля 2020 г.
Немного про говнокод в aws
Есть уже рабочий стэк, который трогать не хочется, и нужно задеплоить 1 новую машину, для этого заводим новый VPC. Причём уже есть ASG+LaunchConfig где всё деплоится как надо, но тут задача, где больше 1 сервера точно не понадобится, vpn, jenkins итд, много когда более 1 машины просто не нужно.
Value () for parameter groupId is invalid. The value cannot be empty (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: ...
Открываем доку и видим
[EC2-Classic, default VPC] The names of the security groups. For a nondefault VPC, you must use security group IDs instead.
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
на
"SecurityGroupIds" : [ { "Fn::GetAtt" : [ "InstanceSecurityGroup", "GroupId" ] }],
Наслаждаемся ошибкой
Security group sg-059f48c4cb6c45ad2 and subnet subnet-8206c0d8 belong to different networks. Потому что в SG у нас корректно замапилась группа и VPC, а тут взят дефолтный параметр (помним, что у нас иной VPC?). Со злости удаляем вообще SecurityGroupIds, запускаем, радуемся что всё создалось. А потом идём в управление серверами.. и видим что VPC - default и SG пустой!
Вообще, если посмотреть в параметры, там есть LaunchTemplate. Но пока продолжать разгребать эти конюшни.
Судя по всему, тут роляет именно SecurityGroupIds + SubnetId, про что нигде внятно не сказано! Если будет SecurityGroups+SubnetId (второе на верхнем уровне) то будет ошибка
The parameter groupName cannot be used with the parameter subnet (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination;
Хотя можно попробовать вынести SubnetId в NetworkInterfaces (с обвязкой, читаем доку), и с SecurityGroups...
среда, 26 февраля 2020 г.
вторник, 25 февраля 2020 г.
AWS WAF – Брандмауэр для интернет‑приложений
https://aws.amazon.com/ru/waf/
AWS WAF – это брандмауэр для интернет‑приложений, который позволяет защитить их (или различные API) от распространенных сетевых эксплойтов, способных повлиять на доступность, создать угрозу безопасности или задействовать чрезмерное количество ресурсов API или приложения. AWS WAF предоставляет полный контроль над тем, каким именно образом трафик будет достигать приложений пользователя: он сможет создавать правила безопасности, которые будут блокировать такие выполняемые по распространенным шаблонам атаки, как SQL-инъекции или межсайтовый скриптинг, а также правила, которые будут фильтровать трафик с определенным характером. Начать работу с AWS WAF можно чрезвычайно быстро благодаря наличию управляемых правил – предварительно сформированного набора правил, управляемых AWS или продавцами рынка AWS Marketplace. Управляемые правила для WAF позволяют справиться даже с проблемами из списка десяти главных угроз безопасности по версии OWASP. Эти правила регулярно обновляются по мере возникновения новых проблем. AWS WAF предлагает полнофункциональный API, позволяющий автоматизировать процессы создания, развертывания и обслуживания правил безопасности.
Но в настройке это весьма... объёмная вещь. Конфиги в сотни и сотни строк - вполне норма.
Пример шаблонов
https://aws.amazon.com/ru/solutions/aws-waf-security-automations/
Шаблон к нему
https://s3.amazonaws.com/solutions-reference/aws-waf-security-automations/latest/aws-waf-security-automations.template
40 кб. Это к вопросу размеров. Выкатить несколько независимых стэков - меньше выходит.
Ещё пример, из которого можно собрать нужное
https://github.com/aws-samples/aws-waf-sample
AWS WAF – это брандмауэр для интернет‑приложений, который позволяет защитить их (или различные API) от распространенных сетевых эксплойтов, способных повлиять на доступность, создать угрозу безопасности или задействовать чрезмерное количество ресурсов API или приложения. AWS WAF предоставляет полный контроль над тем, каким именно образом трафик будет достигать приложений пользователя: он сможет создавать правила безопасности, которые будут блокировать такие выполняемые по распространенным шаблонам атаки, как SQL-инъекции или межсайтовый скриптинг, а также правила, которые будут фильтровать трафик с определенным характером. Начать работу с AWS WAF можно чрезвычайно быстро благодаря наличию управляемых правил – предварительно сформированного набора правил, управляемых AWS или продавцами рынка AWS Marketplace. Управляемые правила для WAF позволяют справиться даже с проблемами из списка десяти главных угроз безопасности по версии OWASP. Эти правила регулярно обновляются по мере возникновения новых проблем. AWS WAF предлагает полнофункциональный API, позволяющий автоматизировать процессы создания, развертывания и обслуживания правил безопасности.
Но в настройке это весьма... объёмная вещь. Конфиги в сотни и сотни строк - вполне норма.
Пример шаблонов
https://aws.amazon.com/ru/solutions/aws-waf-security-automations/
Шаблон к нему
https://s3.amazonaws.com/solutions-reference/aws-waf-security-automations/latest/aws-waf-security-automations.template
40 кб. Это к вопросу размеров. Выкатить несколько независимых стэков - меньше выходит.
Ещё пример, из которого можно собрать нужное
https://github.com/aws-samples/aws-waf-sample
вторник, 18 февраля 2020 г.
aws: Load Balancer Types
Elastic Load Balancing supports the following types of load balancers: Application Load Balancers, Network Load Balancers, and Classic Load Balancers. Amazon ECS services can use either type of load balancer. Application Load Balancers are used to route HTTP/HTTPS (or Layer 7) traffic. Network Load Balancers and Classic Load Balancers are used to route TCP (or Layer 4) traffic.
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html (и вообще лучше ознакомиться, там подходы разные)
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/
Когда нам нужно обрабатывать http(s) трафик, лучше всего подходит application LB. Чем он лучше классического:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html#application-load-balancer-benefits
Моменты, о которых надо помнить
- Требуется минимум 2 AZ. Даже если данные есть только в одной, остальные должны просто быть. А вот 1 сети в каждой AZ будет достаточно.
- Не забыть про security groups
- Желательно добавить Health Checks для сервера
В случае с CloudFormation можно начать отсюда
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
Не путать с почти такой же страницей, но без V2 - так как это classic lb
You can specify the AvailabilityZones or Subnets property, but not both.
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html (и вообще лучше ознакомиться, там подходы разные)
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/
Когда нам нужно обрабатывать http(s) трафик, лучше всего подходит application LB. Чем он лучше классического:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html#application-load-balancer-benefits
Моменты, о которых надо помнить
- Требуется минимум 2 AZ. Даже если данные есть только в одной, остальные должны просто быть. А вот 1 сети в каждой AZ будет достаточно.
- Не забыть про security groups
- Желательно добавить Health Checks для сервера
В случае с CloudFormation можно начать отсюда
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html
Не путать с почти такой же страницей, но без V2 - так как это classic lb
You can specify the AvailabilityZones or Subnets property, but not both.
среда, 12 февраля 2020 г.
Install aws cli on mac
Самый простой метод - через pip
pip3 install awscli --upgrade --user
но после этого надо добавить путь в path
export PATH=~/Library/Python/3.7/bin:$PATH
Другие варианты:
https://docs.aws.amazon.com/cli/latest/userguide/install-macos.html
Также есть aws cli version 2
For AWS CLI version 2, it doesn't matter if you have Python installed and if you do, it doesn't matter which version. AWS CLI version 2 uses only the embedded version of Python (and any other dependencies) that is included in the installer.
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
pip3 install awscli --upgrade --user
но после этого надо добавить путь в path
export PATH=~/Library/Python/3.7/bin:$PATH
Другие варианты:
https://docs.aws.amazon.com/cli/latest/userguide/install-macos.html
Также есть aws cli version 2
For AWS CLI version 2, it doesn't matter if you have Python installed and if you do, it doesn't matter which version. AWS CLI version 2 uses only the embedded version of Python (and any other dependencies) that is included in the installer.
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
пятница, 7 февраля 2020 г.
Jenkins plugins: Usage plugin
https://plugins.jenkins.io/plugin-usage-plugin
https://wiki.jenkins.io/pages/viewpage.action?pageId=73532011
Показывает список установленных плагинов, а для классических задач покажет ещё кто использует (но только использует явно, по связанности может показать нули), а по кнопке expand даже покажет, какими задачами какой плагин используется.
https://wiki.jenkins.io/pages/viewpage.action?pageId=73532011
Показывает список установленных плагинов, а для классических задач покажет ещё кто использует (но только использует явно, по связанности может показать нули), а по кнопке expand даже покажет, какими задачами какой плагин используется.
четверг, 6 февраля 2020 г.
Jenkins+aws
Самый простой вариант это ставим aws cli и через execute shell, но далеко не самый правильный
https://github.com/jenkinsci/pipeline-aws-plugin
Умеет работать с s3, cfn, sns и ещё чуть по мелочи
https://jenkins.io/doc/pipeline/steps/s3/
https://plugins.jenkins.io/artifact-manager-s3
более частные случаи
https://github.com/jenkinsci/pipeline-aws-plugin
Умеет работать с s3, cfn, sns и ещё чуть по мелочи
https://jenkins.io/doc/pipeline/steps/s3/
https://plugins.jenkins.io/artifact-manager-s3
более частные случаи
воскресенье, 2 февраля 2020 г.
понедельник, 27 января 2020 г.
Jenkins: более гибкие возможности с freestyle configuration
При работе с freestyle configuration часто встают вопросы переноса конфигураций, их архивирования, контроле версий и прочем. Они конечно доступны в xml формате, но работа "напрямую" крайне неудобна. Плюс нет механизмов контроля подключённых плагинов, нужно отдельно получать их список с версиями и носить в отдельных файлах. Но если нет возможности перейти на pipeline, есть плагины, облегчающие жизнь.
воскресенье, 26 января 2020 г.
Jenkins, HTML documentation and security
Jenkins может сам генерировать документацию, но доступ к ней будет ограничен по CSP
Jenkins 1.641 / Jenkins 1.625.3 introduce the Content-Security-Policy header to static files served by Jenkins (specifically DirectoryBrowserSupport). This header is set to a very restrictive default set of permissions to protect Jenkins users from malicious HTML/JS files in workspaces, /userContent, or archived artifacts.
Unfortunately, several popular, useful plugins are affected by this and lose part of their functionality unless the default rules are relaxed.
https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy
Сначала для обхода надо было выставлять hudson.model.DirectoryBrowserSupport.CSP, например через консоль
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
Или через конфиг файлы
https://kb.froglogic.com/squish/integrations/jenkins/content-security-policy-csp-web-report/
https://stackoverflow.com/questions/37618892/jenkins-content-security-policy
Но с версии 2.200 введено улучшение - отдельный путь для документации, зовётся Resource root URL. По встроенной справке много подробностей.
https://issues.jenkins-ci.org/browse/JENKINS-41891
Jenkins 1.641 / Jenkins 1.625.3 introduce the Content-Security-Policy header to static files served by Jenkins (specifically DirectoryBrowserSupport). This header is set to a very restrictive default set of permissions to protect Jenkins users from malicious HTML/JS files in workspaces, /userContent, or archived artifacts.
Unfortunately, several popular, useful plugins are affected by this and lose part of their functionality unless the default rules are relaxed.
https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy
Сначала для обхода надо было выставлять hudson.model.DirectoryBrowserSupport.CSP, например через консоль
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;")
Или через конфиг файлы
https://kb.froglogic.com/squish/integrations/jenkins/content-security-policy-csp-web-report/
https://stackoverflow.com/questions/37618892/jenkins-content-security-policy
Но с версии 2.200 введено улучшение - отдельный путь для документации, зовётся Resource root URL. По встроенной справке много подробностей.
https://issues.jenkins-ci.org/browse/JENKINS-41891
пятница, 24 января 2020 г.
четверг, 16 января 2020 г.
Amazon RDS for PostgreSQL Supports User Authentication with Kerberos and Microsoft Active Directory
https://aws.amazon.com/ru/about-aws/whats-new/2019/10/amazon-rds-for-postgresql-supports-user-authentication-with-kerberos-and-microsoft-active-directory/
Posted On: Oct 29, 2019
PostgreSQL versions 11.4, 10.9 and above are supported with Active Directory integration.
Требуется именно Microsoft Active Directory, и тогда в настройках датасета можно будет включить AD. Но тут есть нюанс, ИЛИ IAM, ИЛИ AD.
Posted On: Oct 29, 2019
PostgreSQL versions 11.4, 10.9 and above are supported with Active Directory integration.
Требуется именно Microsoft Active Directory, и тогда в настройках датасета можно будет включить AD. Но тут есть нюанс, ИЛИ IAM, ИЛИ AD.
amazon VPC - общение между подсетями
A VPC peering connection is a networking connection between two VPCs that enables you to route traffic between them privately. Instances in either VPC can communicate with each other as if they are within the same network. You can create a VPC peering connection between your own VPCs, with a VPC in another AWS account, or with a VPC in a different AWS Region.
Если есть несколько VPC, например на разных аккаунтах или в разных регионах, и нужна их связность - есть такая штука как VPC peering.
https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html (и далее)
https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html
Вкратце - сначала нужно установить VPC Peering (доверенную связь) - в одноимённом разделе сначала на первом аккаунте/регионе отправляем запрос, потом на втором аккаунте/регионе подтверждаем связь.
Далее в routing tables с обоих сторон добавляем новые сети. При разделении на приватные и публичные сети - добавлять нужно в обе сети. Приватные - для нормального обмена, публичные - чтобы получать доступ к серверам из публичной сети, а так же при подключении к впн (который должен быть в публичной сети) чтобы через него были доступны связанные регионы.
Обращаем внимание на ограничения, в том числе - сети в пиринге не должны пересекаться.
Также, если много связей, имеет смысл посмотреть на
https://aws.amazon.com/ru/about-aws/whats-new/2019/12/aws-transit-gateway-supports-inter-region-peering/
Что-то достаточно свежее: Posted On: Dec 3, 2019
Отдельно настраивается резолвинг днс между зонами.
Если есть несколько VPC, например на разных аккаунтах или в разных регионах, и нужна их связность - есть такая штука как VPC peering.
https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html (и далее)
https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html
Вкратце - сначала нужно установить VPC Peering (доверенную связь) - в одноимённом разделе сначала на первом аккаунте/регионе отправляем запрос, потом на втором аккаунте/регионе подтверждаем связь.
Далее в routing tables с обоих сторон добавляем новые сети. При разделении на приватные и публичные сети - добавлять нужно в обе сети. Приватные - для нормального обмена, публичные - чтобы получать доступ к серверам из публичной сети, а так же при подключении к впн (который должен быть в публичной сети) чтобы через него были доступны связанные регионы.
Обращаем внимание на ограничения, в том числе - сети в пиринге не должны пересекаться.
Также, если много связей, имеет смысл посмотреть на
https://aws.amazon.com/ru/about-aws/whats-new/2019/12/aws-transit-gateway-supports-inter-region-peering/
Что-то достаточно свежее: Posted On: Dec 3, 2019
Отдельно настраивается резолвинг днс между зонами.
Автоматический переключатель входов, Блок распределения питания
Обновление к https://dragonflybsd.blogspot.com/2011/03/blog-post.html
PDU, ATS.. все называют по разному, и вкладывая разный смысл. Тот же PDU это в том числе "сетевой фильтр", только промышленного класса.
В очередной раз подняв вопрос устройств, где на входе 2 энерговвода, на выходе пачка розеток, пришло желание сделать памятку по моделям.
Самая известная фирма это APC, у них такие устройства зовутся Rack ATS (Automatic Transfer Switch)
пример модели
AP4434
Вроде как RP серия у Cisco тоже то что нужно, но искать что-то по их продукции это боль.
Ну и есть много производителей типа CyberPower, у них дешевле, но зависит от того что подключать собираемся. Например
https://www.cyberpower.com/ru/ru/product/sku/pdu20swhviec10atnet#specification
И тут есть заявленное время переключения 8~12мс.
PDU, ATS.. все называют по разному, и вкладывая разный смысл. Тот же PDU это в том числе "сетевой фильтр", только промышленного класса.
В очередной раз подняв вопрос устройств, где на входе 2 энерговвода, на выходе пачка розеток, пришло желание сделать памятку по моделям.
Самая известная фирма это APC, у них такие устройства зовутся Rack ATS (Automatic Transfer Switch)
пример модели
AP4434
Вроде как RP серия у Cisco тоже то что нужно, но искать что-то по их продукции это боль.
Ну и есть много производителей типа CyberPower, у них дешевле, но зависит от того что подключать собираемся. Например
https://www.cyberpower.com/ru/ru/product/sku/pdu20swhviec10atnet#specification
И тут есть заявленное время переключения 8~12мс.
Подписаться на:
Сообщения (Atom)