dtcloud_security_group_rule (Kaynak)
Bir güvenlik grubunun içindeki tek bir kuralı yönetir.
API'nin bir oluşturma ve bir silme uç noktası vardır, başka hiçbir şeyi yoktur; bu yüzden her argüman değişikliği yeni bir kural gerektirir. Platform zaten bunu yapar: eski kuralı siler, yenisini oluşturur. Kaynak kimliği <security-group-id>:<rule-id>'dir, çünkü bir kural, grubunun kuralları listelenerek okunur.
Örnek Kullanım
# Tek bir adres aralığından SSH'ye izin verin.
resource "dtcloud_security_group_rule" "ssh_from_office" {
security_group_id = dtcloud_security_group.web.id
direction = "ingress"
protocol = "tcp"
port_range_min = 22
port_range_max = 22
remote_ip_prefix = "10.10.0.0/16"
}
# Başka bir gruptaki tüm makinelerden gelen trafiğe izin verin. Bir adres
# yerine bir gruba başvurmak, makineler eklenip çıkarıldıkça kuralı
# doğru tutar.
resource "dtcloud_security_group_rule" "app_from_web" {
security_group_id = dtcloud_security_group.app.id
direction = "ingress"
protocol = "tcp"
port_range_min = 8080
port_range_max = 8080
remote_group_id = dtcloud_security_group.web.id
}
remote_ip_prefix ve remote_group_id değerlerinin ikisini de yazmazsanız kural tüm adres ailesine uygulanır: IPv4 için 0.0.0.0/0, IPv6 için ::/0.
Şema
Zorunlu
direction(String) Trafik yönü:ingress(gelen) ya daegress(giden). Bu değiştirilirse yeni bir kaynak oluşturulur.security_group_id(String) Bu kuralın ait olduğu güvenlik grubunun kimliği. Bu değiştirilirse yeni bir kaynak oluşturulur.
İsteğe Bağlı
ethertype(String) Adres ailesi:IPv4ya daIPv6. Varsayılan olarak platformun seçtiği değerdir, yaniIPv4. Bu değiştirilirse yeni bir kaynak oluşturulur.port_range_max(Number) Aralıktaki son bağlantı noktası.icmpiçin bu bir bağlantı noktası değil, ICMP kodudur. Tüm bağlantı noktaları için yazmayın. Bu değiştirilirse yeni bir kaynak oluşturulur.port_range_min(Number) Aralıktaki ilk bağlantı noktası.icmpiçin bu bir bağlantı noktası değil, ICMP tipidir. Tüm bağlantı noktaları için yazmayın. Aşağıdaki 0 notuna bakın. Bu değiştirilirse yeni bir kaynak oluşturulur.protocol(String) Kuralın eşleştiği protokol, örn.tcp,udp,icmpya da bir protokol numarası. Tüm protokollerle eşleşmek için yazmayın. Platform yaygın adlardan fazlasını kabul ettiği için sabit bir listeyle sınırlı değildir. Bu değiştirilirse yeni bir kaynak oluşturulur.remote_group_id(String) Kuralın üyelerine uygulandığı başka bir güvenlik grubunun kimliği. Ad değil kimlik: platform burada adları çözmez.remote_ip_prefixile birlikte kullanılamaz. Bu değiştirilirse yeni bir kaynak oluşturulur.remote_ip_prefix(String) Kuralın uygulandığı CIDR, örn.10.0.0.0/24.remote_group_idile birlikte kullanılamaz. Bu değiştirilirse yeni bir kaynak oluşturulur.timeouts(Block, Optional) (bkz. aşağıdaki iç içe şema)
Salt Okunur
description(String) Kuralın açıklaması. Salt okunur: oluşturma yolu açıklama kabul etmez, bu yüzden yalnızca Terraform dışında oluşturulmuş bir kuralda dolu olur.id(String) Bu kaynağın kimliği.normalized_cidr(String) Ana bilgisayar bitleri temizlenmişremote_ip_prefix, platformun hesapladığı haliyle:10.0.0.5/24burada10.0.0.0/24olarak bildirilir.
timeouts için iç içe şema
İsteğe Bağlı:
create(String)delete(String)
Bilinmesi Gerekenler
- Plan aşamasında reddedilenler. Protokolü olmayan bir bağlantı noktası aralığı,
tcpveudpiçinport_range_max'tan büyük birport_range_minve adres ailesiethertypeile uyuşmayan birremote_ip_prefix. Yinelenen bir kural bunlardan biri değildir: aynısının zaten var olup olmadığı ancak apply sırasında bilinir ve orada platformun reddi aktarılır. - ICMP, bağlantı noktası alanlarını tip ve kod için kullanır.
protocol = "icmp"içinport_range_minICMP tipi,port_range_maxise koddur. Bir aralık olmadıkları için sıralama kontrolü uygulanmaz. 0ile "ayarlanmamış" aynı değerdir. Sıfır olan bir bağlantı noktası istekten çıkarılır ve platform ayarlanmamış bir bağlantı noktasını boş bildirir; bu da0olarak geri okunur. Pratikte bu yalnızca ICMP tip 0'ın (echo reply) ifade edilememesi demektir.protocolbüyük/küçük harfi yok sayar. Gönderilmeden ve saklanmadan önce küçük harfe çevrilir, bu yüzdenTCPiletcpasla değişiklik olarak görünmez.- Grubu silmek kurallarını da götürür. Grubu silinmiş bir kural hata vermek yerine state'ten düşer, çünkü platform silinmiş bir grubun kural listesine boş bir listeyle yanıt verir.
Zaman Aşımları
create ve delete için varsayılan süre 5 dakikadır; her değişiklik kuralı yeniden oluşturduğu için update yoktur. Bu çağrılar eşzamanlıdır, bu yüzden zaman aşımları takılı kalmış bir isteği sınırlar. Bunları bir timeouts bloğuyla değiştirin:
resource "dtcloud_security_group_rule" "ssh_from_office" {
# ...
timeouts {
create = "10m"
}
}
İçe Aktarma
# Bir kural, grubu listelenerek bulunur; bu yüzden içe aktarma kimliği iki
# kimliği de taşır: <security-group-id>:<rule-id>
terraform import dtcloud_security_group_rule.ssh_from_office 7f9c1e40-1c3d-4b6a-9a2f-5f1c9d0e3b11:2b8d5a71-90ce-4f2a-8d13-6c0b4e7a1f22
Kural kimlikleri, hem kaynakta hem de dtcloud_security_group veri kaynağında, grubun inbound_rule ve outbound_rule özniteliklerindedir. Her şey geri okunur.